0
我有許多一對多關係如下(在庫類型的應用):休眠緩存的陳舊數據:多對多單向映射
User:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "user_book",
joinColumns = {@JoinColumn(name = "fk_user")},
inverseJoinColumns = {@JoinColumn(name = "fk_book")}
)
private List<Book> books = null;
Book:
@ManyToMany(cascade = {CascadeType.ALL},
mappedBy = "books", fetch = FetchType.LAZY)
private List<User> users;
問題:當我編輯書的名稱,該值在表中得到更新,但是由於休眠緩存,User對象仍然保持對舊書實體的引用。所以,在後端我有正確的帳面價值,在UI上我仍然看到陳舊的價值。我正在使用ehcache並啓用二級緩存。 緩存配置:
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToLiveSeconds="120"
overflowToDisk="false"
diskPersistent="false"
/>
<cache name="org.hibernate.cache.UpdateTimestampsCache"
maxElementsInMemory="10000"
timeToIdleSeconds="300"
/>
<cache name="org.hibernate.cache.StandardQueryCache"
maxElementsInMemory="10000"
timeToIdleSeconds="300"
/>
我也在使用OEMIV過濾器。
你的問題到底是什麼?如何配置緩存?你使用每次交易會話嗎?的session-per-談話?會話的每個請求? –
問:如何讓我的冬眠編輯後不緩存舊值?我啓用了OEMIV過濾器。高速緩存配置如上所述(最近更新) – Supra
您還沒有創建關聯高速緩存,因此它不能在第二級高速緩存中。我們不知道如何在Book實體上配置緩存。我們不知道如何編輯本書的名稱:通過Hibernate?相同的JVM? –