Hibernate e tratamento de campos not nulls (preciso de ajuda)

Oi pessoal, estou com um problema bem simples… mais não consegui achar a solução …

Estou usando Hibernate, e estou kerendo adcionar 1 objeto a minha tabela, só que os campos na tabale são NOT NULL, e quero manter isso, porem, [color=red]quando vou inserir dados na tabela, eu gostaria que se o campo fosse nulo, ele seguisse o valor padrão setado na tabela da tabela.[/color]

mesmo quando as propriedades do objetos são nulas ele tenta inserir como nulo, segue o pekeno código abaixo

public class Teste3 { public static void main(String[] args) { Session session = HibernateUtil.getSession(); Telefone t = new Telefone(); t.setTelefone("33332222"); Transaction tx = session.beginTransaction(); //Cria transação session.save(t); tx.commit(); } }
A saida do hibernate foi

[color=red]porem a minha intenção é que quando os valores sejam nulos no momento do insert, ele simplismente subtraia esses campos do insert eu esperava algo como:[/color]

pois ai nesse caso os valores padrões seriam assumidos pelos campos nulos no momento do INSERT. queria q não fosse necessario setar valores para outras propriedades do telefone.

estou usando Hibernate Annotation, porem se alguem sober a solução sem Annotation sem problemas, só queria saber a solução para ele suprimir, apenas no momento do insert, os valores nulos, pelos valores no banco de dados.

abaixo segue os códigos de criação da tabela, um screen da tabela, e o código do objeto Telefone

Ps.: Desde já agradeço qualquer ajuda

CREATE TABLE IF NOT EXISTS `simrenta_myfactory`.`telefone` ( `telefone_id` BIGINT NOT NULL AUTO_INCREMENT , `telefone_fax` INT(3) NOT NULL DEFAULT 1 , `telefone_mobilidade` INT(3) NOT NULL DEFAULT 1 , `telefone_DDI` VARCHAR(5) NOT NULL DEFAULT '55' , `telefone_DDD` VARCHAR(5) NOT NULL DEFAULT '83' , `telefone_numero` VARCHAR(20) NOT NULL , PRIMARY KEY (`telefone_id`) , UNIQUE INDEX `u_telefone_DDI_DDD_numero` (`telefone_DDI` ASC, `telefone_DDD` ASC, `telefone_numero` ASC) , INDEX `fk_telefone_telefoneFax` (`telefone_fax` ASC) , INDEX `fk_telefone_telefoneMobilidade` (`telefone_mobilidade` ASC) , CONSTRAINT `fk_telefone_telefoneFax` FOREIGN KEY (`telefone_fax` ) REFERENCES `simrenta_myfactory`.`telefoneFax` (`telefoneFax_id` ) ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT `fk_telefone_telefoneMobilidade` FOREIGN KEY (`telefone_mobilidade` ) REFERENCES `simrenta_myfactory`.`telefoneMobilidade` (`telefoneMobilidade_id` ) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINE = InnoDB

Objeto Telefone

[code]package com.tomazlavieri.myfactory.dominio.util;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name=“telefone”)
public class Telefone {
/**
* Número de identificacao interno do telefone no banco de dados
/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name=“telefone_id”)
private int identificacao;
/
*
*
/
@ManyToOne
@JoinColumn(name=“telefone_mobilidade”)
private TelefoneMobilidade mobilidade;
@ManyToOne
@JoinColumn(name=“telefone_fax”)
private TelefoneFax fax;
@Column(name=“telefone_DDI”)
private String codigoDDI;
@Column(name=“telefone_DDD”)
private String codigoDDD;
@Column(name=“telefone_numero”)
private String telefone;
public Telefone() {}
/
*
* @param identificacao the identificacao to set
/
public void setIdentificacao(int identificacao) {
this.identificacao = identificacao;
}
/
*
* @return the identificacao
/
public int getIdentificacao() {
return identificacao;
}
/
*
* @param mobilidade the mobilidade to set
/
public void setMobilidade(TelefoneMobilidade mobilidade) {
this.mobilidade = mobilidade;
}
/
*
* @return the mobilidade
/
public TelefoneMobilidade getMobilidade() {
return mobilidade;
}
/
*
* @param fax the fax to set
/
public void setFax(TelefoneFax fax) {
this.fax = fax;
}
/
*
* @return the fax
/
public TelefoneFax getFax() {
return fax;
}
/
*
* @param codigoDDI the codigoDDI to set
/
public void setCodigoDDI(String codigoDDI) {
this.codigoDDI = codigoDDI;
}
/
*
* @return the codigoDDI
/
public String getCodigoDDI() {
return codigoDDI;
}
/
*
* @param codigoDDD the codigoDDD to set
/
public void setCodigoDDD(String codigoDDD) {
this.codigoDDD = codigoDDD;
}
/
*
* @return the codigoDDD
/
public String getCodigoDDD() {
return codigoDDD;
}
/
*
* @param telefone the telefone to set
/
public void setTelefone(String telefone) {
this.telefone = telefone;
}
/
*
* @return the telefone
*/
public String getTelefone() {
return telefone;
}
}[/code]

Só pra especificar, o que to querendo, é poder dizer para o hibernate que um campo quando nulo não deve aparecer no código SQL quando o campo for NOT NULL