這是爲相關後端獲取指定級別的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