Como proceder ao erro: "is not mapped [SELECT FROM]"?[Resolvido]

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.

Não falta adicionar a classe ao persistence.xml ?

Foi isso mesmo, pensei que ele fazia isso automaticamente…

Se alguém tiver o mesmo erro que o meu é só colocar a tag class no persistence.xml depois da tag provider.

Exemplo: <class> futebol.entities.TimeEntity</class>

Muito obrigado pela ajuda.

Att, André Vieira

1 curtida

Pessoas,

Está acontecendo esse erro comigo também, só que apesar de ter mapeado as classes no persistence.xml :

	<provider>org.hibernate.ejb.HibernatePersistence</provider>  
	<!--mapeamento das classes-->
   		 <class>br.ufpe.nti.entity.TestCase</class>
   		 <class>br.ufpe.nti.entity.TestSession</class>

ocorre o seguinte erro:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: test_case is not mapped [SELECT f FROM test_case f WHERE script_result = ?1]
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:326)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3252)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3141)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:694)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:550)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:287)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:235)
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:101)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:119)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:214)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:192)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1537)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:285)
… 58 more

Alguém poderia me ajudar?

OBS: não sei se fiiz certo postar aki numa dúvida já resolvida, qualquer cosia me desculpem sou nova aki XD

marcilys, vc está mapeando uma classe denominada TestCase e fazendo select em test_case.

Mude o select para from TestCase que vai funcionar!

5 curtidas

isso é preciso mesmo eu tendo renomeado a entidade para ser salva no banco da forma abaixo?

@Table(name = “test_case”)

Muito obg resolveu o meu problema XD