Boa tarde caros!
Estou tendo problemas para buscar dados no database via Hibernate. As classes estão com a notação correta, como pode ser visualizado abaixo:
//Entidade//
package futebol.entities;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "times")
public class TimeEntity {
@Id @GeneratedValue
private int id;
@Column(name="nome", nullable=false)
private String nome;
@Column(name="apelido", nullable=false)
private String apelido;
@OneToMany
List<JogadorEntity> jogador;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getApelido() {
return apelido;
}
public void setApelido(String apelido) {
this.apelido = apelido;
}
public List<JogadorEntity> getJogador() {
return jogador;
}
public void setJogador(List<JogadorEntity> jogador) {
this.jogador = jogador;
}
}
//Repository//
package futebol.repository;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import futebol.entities.TimeEntity;
public class TimeRepository {
private EntityManager gerenciador;
public TimeRepository(EntityManager gerenciador)
{
this.gerenciador = gerenciador;
}
public void adiciona(TimeEntity t)
{
this.gerenciador.persist(t);
}
public TimeEntity busca(int id)
{
return this.gerenciador.find(TimeEntity.class, id);
}
@SuppressWarnings("unchecked")
public List<TimeEntity> buscaTodos()
{
Query query = gerenciador.createQuery("SELECT t FROM TimeEntity t");
return query.getResultList();
}
}
O erro pode ser visualizado abaixo:
0 [main] INFO org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
15 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {4.1.6.Final}
19 [main] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
22 [main] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
564 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000402: Using Hibernate built-in connection pool (not for production use!)
576 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000115: Hibernate connection pool size: 20
576 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000006: Autocommit mode: true
577 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/futebol]
577 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000046: Connection properties: {user=root, autocommit=true, release_mode=auto}
1081 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
1137 [main] INFO org.hibernate.engine.transaction.internal.TransactionFactoryInitiator - HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
1149 [main] INFO org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory - HHH000397: Using ASTQueryTranslatorFactory
1651 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000228: Running hbm2ddl schema update
1651 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000102: Fetching database metadata
1653 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000396: Updating schema
1654 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000232: Schema update complete
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: TimeEntity is not mapped [SELECT t FROM TimeEntity t]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1364)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1300)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:294)
at futebol.repository.TimeRepository.buscaTodos(TimeRepository.java:31)
at futebol.bean.JogadorBean.buscaTimes(JogadorBean.java:36)
at futebol.bean.Teste.main(Teste.java:14)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: TimeEntity is not mapped [SELECT t FROM TimeEntity t]
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3291)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3180)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:219)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:197)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1736)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291)
… 3 more
1979 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000030: Cleaning up connection pool [jdbc:mysql://localhost:3306/futebol]
Nessa linguagem HDL, eu tentei de tudo jeito mas aparece que classe/tabela não foi mapeada…
Como resolver isso?
Muito obrigado,
Att, André Vieira.