这是为相关后端获取指定级别的Module entites的方法。JPA本机查询不返回任何记录
public List<Module> getModulesWithinLevel(Long backendId, ModuleLevel... levels) {
String joinedLevels = serializeLevels(levels);
Query query = entityManager.createNativeQuery("SELECT DISTINCT M.* FROM MODULES M JOIN ROUTING_SEQUENCES RS ON RS.BCK_ID = M.MOD_ID WHERE M.MOD_LEVEL IN (?) AND RS.BCK_ID = ?", Module.class);
query.setParameter(1, joinedLevels);
query.setParameter(2, backendId);
List l = query.getResultList();
return l;
}
当我在sql开发人员中执行确切的查询时,我得到一行作为结果。 但是这个方法返回空列表。在日志中没有错误 - 只是空的列表。 我的本机查询有什么问题?
我能想到的唯一的事情就是2个参数你设置有不一样的人你把你在SQL开发中运行的查询。另一种可能性是由于数据类型的原因,hibernate或oracle正在转换某些内容,导致查询不返回任何值。你能发布你在Java中看到的参数以及你在SQL开发者中执行的查询吗?还添加映射可能有助于找到问题。 – Augusto 2013-03-08 13:14:53
我设定正确的价值观 - 我相信。但是你的第二个陈述可能是真的。当我从本地查询中删除Module.class参数时,我得到“没有Dialect映射的JDBC类型:-9”。后续快速搜索我来到[链接](http://stackoverflow.com/questions/8991866/org-hibernate-mappingexception-no-dialect-mapping-for-jdbc-type-9) 我实现它,没有例外是抛出,但仍然没有结果返回。 – DominikM 2013-03-08 13:36:55