PessoALL;
Preciso da ajuda do pessoal do fórum… Tenho um objeto Pessoa, que tem uma coleção de Endereços… Essa coleção não é obrigatória, ou seja, posso salvar uma Pessoa sem endereço, e depois no alterar Pessoa, eu posso incluir endereços… O problema é que quando faço isso, o hibernate não cria o código do endereço que será salvo na tabela endereço… e gera a exceção ConstraintViolationException (visto que o código do endereço é chave primaria na tabela né…) Alguém pode me ajudar…
Minha estrutura é essa (+ou-)
Utilizo JSF e Hibernate (Open Session In View),
Mapeamento de Pessoa (Pessoa.hbm.xml)
<hibernate-mapping package="br.sdg.principal.pessoa" >
<!-- Identificador da classe -->
<id name="pessSeq">
<generator class="increment"/>
</id>
<set name="listaEndereco" inverse="false" cascade="all">
<key column="endeSeq" />
<one-to-many class="br.sdg.principal.pessoa.EnderecoDTO" />
</set>
</class>
</hibernate-mapping>
Mapeamento de Endereço (Endereco.hbm.xml)
<class name="EnderecoDTO" table="tab_endereco">
<!-- Identificador da classe -->
<id name="endeSeq">
<generator class="increment"/>
</id>
<!-- Propriedades da classe -->
<property name="endeRua"/>
<property name="endeNume"/>
<property name="endeComp"/>
<property name="endeBair"/>
<!-- Relacionamentos da classe -->
<many-to-one class="br.sdg.principal.pessoa.PessoaDTO" column="pessSeq" name="pessoa" cascade="none"/>
<many-to-one class="br.sdg.principal.dominio.TipoEnderecoDTO" column="tipeSeq" lazy="false" name="tipoEndereco"/>
<many-to-one class="br.sdg.portal.UsuarioDTO" column="usuaSeq" name="usuario"/>
<many-to-one class="br.sdg.principal.controle.SetorCidadeDTO" column="setoSeq" lazy="false" name="setorCidade"/>
</class>
</hibernate-mapping>
Pra salvar faço um update assim:
public void alterar(PessoaDTO dto) throws Exception {
HibernateUtility.getSession().update(dto);
HibernateUtility.getSession().flush();
HibernateUtility.getSession().evict(dto);
}
Qualquer ajuda é válida, visto que meus problemas iniciaram quando tive que tirar o lazy=“false” das coleções (decisão de projeto).