Boa tarde a todos.
Estou precisando de uma pequena ajuda. Comecei a utilizar hibernate já há um tempo, mas, tenho certa resistencia a usar a configuração por XML, então estou agora aprendendo a configurar um ambiente hibernate com annotations.
Tenho uma classe, chamada Usuario, declarada da seguinte forma:
package br.com.beans;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
@Entity()
@Table (name="usuario")
public class Usuario {
private Integer id;
private String login;
private String email;
private char sexo;
private String senha;
/* ------------------ Construtores ------------------ */
public Usuario(){}
public Usuario(String login, String senha){
this.login = login;
this.senha = senha;
}
/* ---------------- Getters e Setters ---------------- */
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Integer getId() {
return id;
}
@Column
@NotNull
public String getLogin() {
return login;
}
...
Costumo criar todas minhas tabelas no banco em low case, só para padronizar. No caso, pelo que li, uso a anotação @Table setando o atributo name com o nome da tabela conforme o banco, para fazer a associação de forma correta.
Estou utilizando o arquivo hibernate.cfg.xml, com a seguinte configuração:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/meu_banco
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.username">usuario</property>
<property name="hibernate.connection.password">senha</property>
<property name="hibernate.connection.pool_size">0</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect
</property>
<property name="hibernate.show_sql">false</property>
<!-- "Import" the mapping resources here -->
<mapping class="br.com.beans.Usuario"/>
</session-factory>
</hibernate-configuration>
Para testar, dentro de um DAO que extende HibernateDaoSupport, tenho o código:
List result = session.createQuery("from "+Usuario.class.getName()).list();
Porém, não consigo fazer consultas, tenho o warn:
WARN [QuerySplitter] no persistent classes found for query class: from br.com.beans.Usuario
Achei que alguma configuração estava errada/incompleta, mas, quando inicio o jboss (uso o jboss 4.0.5) vejo no log:
...
INFO [Version] Hibernate Annotations 3.2.0.GA
INFO [Configuration] configuring from resource: /hibernate.cfg.xml
INFO [Configuration] Configuration resource: /hibernate.cfg.xml
[Configuration] Configured SessionFactory: null
[AnnotationBinder] Binding entity from annotated class: br.com.beans.Usuario
INFO [EntityBinder] Bind entity br.com.beans.Usuario on table usuario
...
Esse trecho me faz pensar que está tudo certo, mas, não consigo entender então o erro que está ocorrendo. Alguém pode me dar uma orientação? (se tiver esquecido de mencionar alguma configuração, é só me falar. Mas, tenho o java 1.5.0_09, a aplicação em questão conta também com o spring 2.0, e a inicialização do jboss não me relata nenhum erro. O referido erro ocorre quando quero acessar algum método do dao).
Obrigada.