1
我使用ehcache和hibernate 3.6.7最後。這是一個顯示緩存問題的僞代碼示例。奇怪的休眠緩存行爲
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class A{
long id;
@OneToMany(mappedBy = "aId", targetEntity = B.class, fetch = FetchType.LAZY)
@Fetch(value = FetchMode.JOIN)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
protected Set<B> fieldB;
}
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class B {
long id;
long bId;
}
1)第一次當我從休眠載入實體A時,它不讀取fieldB。這是好的 - 因爲FetchType.LAZY被設置。
2)當我加載實體A I看到的SQL查詢檢索實體的第二時間JOIN實體B.
3)如果除去@Fetch(值= FetchMode.JOIN)語句點2將不執行。
所以問題是這個錯誤或功能?我怎樣才能避免這種潛在的事情。
你也可以試着問一下Hibernate論壇。如果你足夠勇敢(並且有時間),使用Hibernate源代碼進行調試。 – Luciano