2016-11-10 51 views
0

我在查詢中遇到了帶有「ge」運算符的hibernate條件問題。我的標準代碼如下。有人請幫助指導這種標準的異常行爲的根源是什麼。此外,我的表只有5條記錄。帶ge操作符的Hibernate Criteria查詢被永久卡住

LevelPriority levelPriorirty = (LevelPriority) crit.uniqueResult(); 
    List<LevelPriority> resList = new ArrayList<>(); 
    Criteria newcrit = getSess().createCriteria(LevelPriority.class); 
    if (levelPriorirty != null) { 

     newcrit.add(Restrictions.ge("levelPriority",  levelPriorirty.getLevelPriority())); 
     resList = (List<LevelPriority>) newcrit.list(); 
+0

我看不到任何條件?你爲什麼不把ge-Restriction放到第一行的暴擊標準中?也許你可以嘗試newcrit.add(Property.forName(「levelPriority」).gt(levelPriorirty.getLevelPriority())) –

+0

對不起,它是ge內部條件。它不在運營商。 –

+0

另外我需要返回大於或等於特定優先級的結果。所以這就是爲什麼我必須使用ge而不是gt –

回答

0

最後我能解決它。我發現每次創建標準時我都會打開新的會話。 所以我改變了下面的一個。

sessionFactory.openSession(); 

改爲

sessionFactory.getCurrentSession();