我有兩個實體(例如降低儘可能;每個實體有一個ID字段):刷新休眠式
@Entity
public class A {
@Column(nullable = false)
private double foo;
@Formula(value = "foo - (select coalesce(sum(x.foo), 0) from x where x.a_id = id)")
private double bar;
}
和
@Entity
public class X {
@ManyToOne(optional = false)
private A a;
@Column(nullable = false)
private double foo;
}
當我創建一個新的X
( new X()
,beginTransaction()
,save(x)
,commit()
)A.bar的值不刷新。
我認爲這是因爲舊的(和錯誤的)值仍然在一級緩存中(沒有二級緩存)。我不想調用Session.clear()
,因爲此方法似乎會使現有的實體對象無效。我還能做些什麼來解決這個問題?
編輯:如這裏要求是代碼保存X
-objects:
// setters
getSession().beginTransaction(); // getSession() returns the current session
getSession().save(entity); // entity is an instance of X
getSession().getTransaction().commit();
你可以粘貼代碼來保存X嗎? – Premraj 2011-03-26 13:34:34