2016-11-10 29 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();