我的DAO课程中有这个方法:
public List<Protocolo> buscarProtocolos(int situacao){
List<Protocolo> protocolos = null;
protocolosPorSitucao = null;
String sql = "select * from hibernatedb.protocolo where situacao_id = ?";
em = HibernateManager.getEntityManager();
protocolosPorSitucao = em.createNativeQuery(sql, Protocolo.class);
protocolosPorSitucao.setParameter(1, situacao);
em.getTransaction().begin();
logger.info("Buscando protocolos por situacao : "+ situacao);
protocolos = (List<Protocolo>) protocolosPorSitucao.getResultList();
logger.info("Protocolos encontrados: "+protocolos.size());
em.getTransaction().commit();
em.close();
return protocolos;
}
此查询select * from hibernatedb.protocolo where situacao_id = 1
在pgAdmin3中执行时返回一行,但hibernate返回0行。这是从hibernate生成的日志:
Hibernate: select * from hibernatedb.protocolo where situacao_id = ?
0
这意味着hibernate返回0结果,导致我的列表为空。
此代码中的错误在哪里?
P.S。:在创建NativeQueries时,我也需要设置数据库。那是因为NativeQuery忽略了persistence.xml
上建立的配置?