Hibernate + Mapeamento XML x Valor padrão base de dados

4 respostas
Jux

Olá pessoal,

Tenho o seguinte problema:

Tenho uma tabela com alguns campos com valor padrão definidos na base de dados, mas quando eu salvo algum registro nessa tabela os valores padrão ficam nulos.

Estou usando hibernate com mapeamento xml e gostaria de saber se existe alguma propriedade que eu possa adicionar nos campos para eles carregarem os valores padrão da base caso os mesmos não sejam preenchidos na aplicação.

Muito Obrigado!

4 Respostas

LPJava

se ta ficando null é pq nao ta recebendo os valores, e se for objeto será null, mas se for primitivo será o valor padrao, Integer é um objeto e nao primitivo por exemplo e será null. Vc tb pode definir la no bd qual o valor padrao para cada coluna caso nao receba nada.

Jux

Então,

Eu defini no db os valores padrão, mas mesmo assim os valores não estão sendo utilizados.

Eu tenho o seguinte pojo

public class XxomvOrderIf implements java.io.Serializable {
   
   private Date creationDate;
   private String operationCode;
   ...

   public Date getCreationDate() {
	return this.creationDate;
   }

   public void setCreationDate(Date creationDate) {
       this.creationDate = creationDate;
   }

   public String getOperationCode() {
      return this.operationCode;
   }

   public void setOperationCode(String operationCode) {
       this.operationCode = operationCode;
   }

  ...

E também tenho o mapeamento XML

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 18/11/2010 11:15:40 by Hibernate Tools 3.3.0.GA -->
<hibernate-mapping>
    <class name="XxomvOrderIf" table="XXOMV_ORDER_IF">
       <id name="soInterfaceId" type="big_decimal">
            <column name="SO_INTERFACE_ID" precision="22" scale="0" />
            <generator class="assigned" />
        </id>
        
        <property name="creationDate" type="date">
            <column name="CREATION_DATE" length="7" />
        </property>
       
        <property name="operationCode" type="string">
            <column name="OPERATION_CODE" length="30" default="INSERT">
                <comment>INSERT</comment>
            </column>
        </property>

         ...
    </class>
</hibernate-mapping>

No xml acima eu até setei para o campo operationCode o valor padrão “INSERT” mas mesmo assim não tive sucesso.

No banco tenho o valor padrão “sysdate” para o campo creationDate e tenho “INSERT” para o campo operationCode.

LPJava

no xml, quando eu usava, apenas vazia as configurações simples, essas definicoes de tamanho etc, eu colocava no banco, no xml nao ia nada mais que o tipo correto para o atributo.

pq nao usar annotations??

Jux

Por causa do legado.

Estou dando manutenção em uma aplicação que roda no Java 1.4

Criado 18 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 4
Participantes 2