Olá a todos… estou com uma aplicação rodando aqui, e tenho uma persistencia com o MS SQL Server 2005.
Algumas classes (as antigas, feitas por outra pessoa) funcionam corretamente, implementei algumas classes novas e estou tendo um erro na hora de executar meu código…
coloquei uma base de testes e to realizando alguns procedimentos basicos, como imprimir uma lista de itens cadastrados, porem aparece o erro abaixo, dizendo que a minha tabela nao foi mapeada… porem , ate onde vi esta mapeada assim como as outras…
Peço para que voces possam me ajudar, pois, com certeza, perceberao algo que eu ainda nao percebi.
public class HbmNovaLinhaBean implements IHbmNovaLinha {
private EntityManager manager = Persistence.createEntityManagerFactory(
"nova").createEntityManager();
public void gravarLinha(HbmNovaLinha linha) {
try {
manager.getTransaction().begin();
manager.persist(linha);
manager.getTransaction().commit();
} catch (RuntimeException e) {
e.printStackTrace();
}
}
public List<HbmNovaLinha> buscaTudo() {
List<HbmNovaLinha> result = new ArrayList<HbmNovaLinha>();
try {
String jpql = "SELECT nl FROM NovaLinha nl ORDER BY nl.DescricaoLinha";
Query query = manager.createQuery(jpql);
List Linha = query.getResultList();
for (Object o : Linha) {
result.add((HbmNovaLinha) o);
}
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
/* mais uns metodos abaixo que nao vem ao caso...... */
}
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: NovaLinha is not mapped [SELECT nl FROM NovaLinha nl ORDER BY nl.DescricaoLinha]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:617)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)
at br.invitro.produto.modelo.HbmNovaLinhaBean.buscaTudo(HbmNovaLinhaBean.java:74)
at br.invitro.produto.principal.Principal.main(Principal.java:26)
Caused by: org.hibernate.hql.ast.QuerySyntaxException: NovaLinha is not mapped [SELECT nl FROM NovaLinha nl ORDER BY nl.DescricaoLinha]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:255)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)
... 2 more
cara sua classe NovaLinha não está mapeada, pelo jeito o sistema está usando XML porque senão deveria constar no seu persistence-xml suas classes que estão mapeadas com annotations… então adicione o mapeamento que vai funcionar.
senhores, eu possuo um arquivo persistence.xml que contem um trecho semelhante ao abaixo com o nome de cada tabela do banco, ou seja, este trecho se repete para cada tabela, somente mudando o nome…
[quote=rafaeldiego]senhores, eu possuo um arquivo persistence.xml que contem um trecho semelhante ao abaixo com o nome de cada tabela do banco, ou seja, este trecho se repete para cada tabela, somente mudando o nome…
porém, cada classe que tenho aqui, está indicada na persistence-unit, ou seja… tenho as classes linha, novalinha, novasublinha, novalinha_sublinha, etc…
Nos arquivos java eu tenho a indicação logo no início, ou seja:
Na classe novalinha, indicada pela persistence unit:
to fazendo uns testes, qdo eu chamo o método “recuperarLinha(Integer id)” passando um id que exista na minha base, ele retorna o resultado corretamente.
se eu chamo o método “buscaTudo()”, ele exibe a msg que a classe “NovaLinha” (que é o nome correto da tabela na base) não está mapeada!
public class HbmNovaLinhaBean implements IHbmNovaLinha {
private EntityManager manager = Persistence.createEntityManagerFactory("novalinha").createEntityManager();
public HbmNovaLinha recuperarLinha(Integer id) {
try {
return manager.find(HbmNovaLinha.class, id.intValue());
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public List<HbmNovaLinha> buscaTudo() {
List<HbmNovaLinha> result = new ArrayList<HbmNovaLinha>();
try {
String jpql = "SELECT nl FROM NovaLinha nl ORDER BY nl.DescricaoLinha";
Query query = manager.createQuery(jpql);
System.out.println(query);
List Linha = query.getResultList();
for (Object o : Linha) {
result.add((HbmNovaLinha) o);
}
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
}
e no caso de eu ter os entities desenvolvidos em um projeto J2Se e a partir dai gero um jar dessas classes e importo no meu projeto maven2, na hora de acessar pego esse mesmo erro de mapped. Pq será? ajuda ae