當我的應用程序啓動時,JPA給我一個錯誤。該錯誤是在命名查詢:指定查詢中的例外
org.hibernate.HibernateException: Errors in named queries: MyEntity.MyQuery org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:435)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883)
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
實體代碼:
@NamedQuery(name = "MyEntity.MyQuery", query = "SELECT r FROM MyEntity r WHERE r.cdSecao = :secao AND r.cdPublico IN :publico")
// other class stuff declarations...
@JoinColumn(name = "cd_publico", referencedColumnName = "cd_publico")
@ManyToOne
private TbPublico cdPublico;
@JoinColumn(name = "cd_secao", referencedColumnName = "cd_secao")
@ManyToOne
private TbSecao cdSecao;
// getters setters and assorted shenanigans...
在DAO
然後,我用這個方法來調用它,即使該異常是在該初始化拋出EntityManager(因爲它有一個命名查詢和東西)。但對於完整起見,這裏有雲:
public List<MyEntity> listMyEntity(String idPublico, TbSecao secao) {
List<TbPublico> listaPublico = OtherClass.doMcGuffin(idPublico);
EntityManager em = EMFactory.getEntityManager();
TypedQuery<MyEntity> theQuery= em.createNamedQuery("MyEntity.MyQuery", MyEntity.class);
theQuery.setParameter("secao", secao);
theQuery.setParameter("publico", listaPublico);
return theQuery.getResultList();
}
回到命名查詢......如果我刪除它的工作AND r.cdPublico IN :publico
,但我需要它。
括號做了訣竅。 – Mindwin