Olá pessoal.
Sou iniciante no uso do hibernate e comecei com uma aplicação simples para estudar. Versão 3.6.6.
Estou fazendo um mapeamento one-to-one. Quando mando gravar os dados o hibernate executa a seguinte instrução sql.
Hibernate:
insert
into
pessoa
(nome_pessoa, id_pessoa)
values
(?, ?)
Hibernate:
update
Endereco
set
desc_endereco=?
where
id_endereco=?
Sendo que deveria executar 2 inserts. Alguém saberia me ajudar a descobrir o problema?
public static void main(String[] args)
{
Pessoa pessoa = new Pessoa();
pessoa.setId_pessoa(2);
pessoa.setNome_pessoa("Nome da Pessoa");
Endereco endereco = new Endereco();
endereco.setId_endereco(pessoa.getId_pessoa());
endereco.setDesc_endereco("Rua tal, numero 20");
pessoa.setEndereco(endereco);
int retorno = insertPessoa(pessoa);
JOptionPane.showMessageDialog(null, "Código cadastrado: " + retorno);
}
public static int insertPessoa(Pessoa pessoa)
{
try
{
Session sessao = HibernateUtil.getSession();
Transaction tspessoa = sessao.beginTransaction();
sessao.save(pessoa);
tspessoa.commit();
sessao.close();
return pessoa.getId_pessoa();
}
catch (Exception erro)
{
JOptionPane.showMessageDialog(null, "Erro na Inserção: " + erro);
return 0;
}
}
Meus arquivos hbm estão assim:
Endereco.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="br.com.optionsistemas.onetoone">
<class name="Endereco" table="Endereco">
<id name="id_endereco" column="id_endereco" type="integer" unsaved-value="null">
</id>
<property name="desc_endereco"/>
</class>
</hibernate-mapping>
Pessoa.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="br.com.optionsistemas.onetoone">
<class name="Pessoa" table="pessoa">
<id name="id_pessoa" column="id_pessoa" type="integer" unsaved-value="null">
</id>
<property name="nome_pessoa"/>
<one-to-one
class="br.com.optionsistemas.onetoone.Endereco"
cascade="all"
name="endereco"
/>
</class>
</hibernate-mapping>
arquivo hibernate.cfg
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping resource="br/com/optionsistemas/onetoone/Pessoa.hbm.xml"/>
<mapping resource="br/com/optionsistemas/onetoone/Endereco.hbm.xml"/>
</session-factory>
</hibernate-configuration>
arquivo hibernate.properties
hibernate.connection.driver_class = org.firebirdsql.jdbc.FBDriver
hibernate.connection.url = jdbc:firebirdsql:localhost/3050:C:\\BDTest\\BaseAssociations.FDB
hibernate.connection.username = SYSDBA
hibernate.connection.password = masterkey
hibernate.dialect = org.hibernate.dialect.FirebirdDialect
hibernate.show_sql = true
hibernate.format_sql = true
hibernate.connection.charset = ISO8859_1
hibernate.connection.lc_ctype = ISO8859_1
hibernate.pool_size = 10