1

1つのトランザクションで次の手順を実行します

(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
}
4

1 に答える 1

0

条件 API の呼び出しにはフラッシュが含まれますが、HQL ステートメントの実行には含まれません。おそらくあなたの FlushMode は AUTO に設定されています。クエリの前にデータベースとのセッションを snych する場合は、FlushMode を ALWAYS に設定します。

于 2012-12-10T11:31:37.363 に答える