Seguinte, estou montando uma aplicação desktop com mysql e hibernate.
Criei os mapeamentos em xml. O que acontece é que quando insiro um item, é gerado uma coluna ID no banco por conta.
por exemplo tenho a seguinte tabela:
depois que salvo um item fica assim no banco:
mas o id inserido é inserido apenas na 1ª coluna na coluna criada automaticamente fica null.
mapeamento
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class mutable="true" name="loterica.model.Clientes" table="CLIENTES">
<id name="id" column="ID" type="long" unsaved-value="null">
<generator class="identity"/>
</id>
<property name="nome" type="string"/>
<property name="sobre_nome" type="string"/>
</class>
</hibernate-mapping>
Classe:
public class Clientes{
private Long id;
private String nome;
private String sobre_nome;
... + métodos get/set ...
no Dao onde executo o insert
...
public void insert(Clientes clientes) throws Exception {
Session session = null;
try {
//abre a sessao
session = sessionFactory.openSession();
System.out.println("Inserindo Registro!!!");
//inicia a transacao
Transaction transaction = session.beginTransaction();
//salva na sessao o objeto
session.save(clientes);
//executa o commit
transaction.commit();
System.out.println("Registro Inserido!");
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
session.flush();
session.close();
}
}
sql do insert
Inserindo Registro!!!
Hibernate:
insert
into
CLIENTES
(nome, sobre_nome)
values
(?, ?)
Registro Inserido!
Tabela no banco
CREATE TABLE `clientes` (
`ID` int(11) NOT NULL auto_increment,
`NOME` varcha(20) NOT NULL,
`SOBRE_NOME` varchar(50) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
O hibernate pode criar essa coluna ID sozinho ?