Hibernate:HQL不加载数据,但条件确实如此

时间:2012-12-10 11:06:21

标签: hibernate hql criteria hibernate-criteria

我在一个交易

中有以下说明
(0)Transaction begins
(1)Insert A into myTable
(2)Load all data from myTable using HQL       #-> A is not loaded
(3)Load all data from myTable using Criteria  #-> A is loaded
(4)Transaction ends

但如果我交换(2)(3),则两种情况都很好并加载了A

什么会导致这个问题?

<小时/> 详细信息: 以下是我的代码

@Transcational
myFunction(){
    //I have A inserted into myTable and the rest...

    SQLQuery crit = (SQLQuery) getSession().createSQLQuery("select * from myTable ");
    ArrayList<PatternHeader> ls = (ArrayList<PatternHeader>)crit.list(); //There is no trace of A

    Criteria cr = getSession().createCriteria(MyTable.class);
    ArrayList<PatternHeader> crls = (ArrayList<PatternHeader>)cr.list(); // A is loaded as well
}

1 个答案:

答案 0 :(得分:0)

对标准API的调用涉及刷新,而HQL语句的执行则不涉及。可能你的FlushMode设置为AUTO,据我所知,它允许Hibernate做它认为最好的事情。如果要在任何查询之前使用数据库监听会话,请将FlushMode设置为ALWAYS。