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

6 respostas
A

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.

6 Respostas

jeanmalvessi

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

A

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

M

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

jeanmalvessi

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

Mude o select para from TestCase que vai funcionar!

M

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

@Table(name = “test_case”)

M

Muito obg resolveu o meu problema XD

Criado 24 de setembro de 2012
Ultima resposta 4 de fev. de 2014
Respostas 6
Participantes 3