Estou iniciando no java mais ja programo em delphi.
Ja li algum material e agora estou tentando acessar dados que tenho numa base que uso com delphi, atraves do hibernate.
Criei uma classe bem simples só pra tentar entender como configurar corretamente o hibernate pra acessar o mysql.
@Table(name="TabClientes")
public class Clientes implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_cliente")
int id;
@Column(name="nm_razao")
String razaoSocial;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRazaoSocial() {
return razaoSocial;
}
public void setRazaoSocial(String razaoSocial) {
this.razaoSocial = razaoSocial;
}
public Clientes() {}
}
A tabela tem mais campos, mais não usei todos no meu teste. Acredito que não seja um problema...
Arquivo de configuração do hibernate:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="database">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entities.Clientes</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/database" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="senha" />
</properties>
</persistence-unit>
</persistence>
Classe pra fazer o teste:
public class ListaClientes {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("database");
EntityManager em = factory.createEntityManager();
List<Clientes> listClientes = (List<Clientes>) em.createQuery("from Clientes", Clientes.class).getResultList();
for(int i = 0; i < listClientes.size(); i++) {
System.out.println(listClientes.get(i).getRazaoSocial());
}
}
}
Não da erro, mais não retorna o esperado. A tabela tem 450 registros, retorna uma lista de 450 "null"s.
Estou usando o log4j jogando no console pra ver oq acontece.
O hibernate faz a conexão, encontra a tabela, lista TODOS os campos da tabela, etc...
Um pouco pra frente, acredito que seja na hora que executa a Query, mostra um select que é executado:
select
clientes0_.id_cliente as t1_0_,
clientes0_.nm_razao as t2_0_
from
TabClientes clientes0_
Ai aparece o resultado do System.out.println()
null
null
null
....
...
..
..
.... 450 linhas de null's
Que mer** que estou fazendo???
Imagino que tenha algo a ver com os "aliases" que o hibernate adicionou por conta...
Algum pode me dar uma luz?
Desculpe a mensagem t"ao longa, mais acho que consegui mostrar todos os detalhes do meu problema.
Tks
Dante Martins