[英]Spring + Hibernate: saving and fetching data in many-to-many relation
我正在使用Spring 3 + Hibernate,並且我有兩個相互關聯的實體(用戶,地址),它們之間的關系為@ManyToMany。 每個實體都映射到一個表(“用戶”和“地址”)上,並且該關系由映射表user_id和address_id的鏈接表“ user_address”定義。
我有添加新地址時保存“用戶”的“ method1”:
@Transactional
public void method1 (...) {
/* do something*/
user.getAddresses().add(address);
session.save(user);
}
在另一種方法2中,我需要為特定用戶檢索街道旁的地址:
@Transactional
public Address method2 (Long userId, String streetName) {
String hql = "select distinct a from Address a " +
"join a.users u " +
"where u.id=:id and a.name=:name";
Query query = session.createQuery(hql);
query.setParameterList("id", userId);
query.setParameterList("name", streetName);
Address address = query.uniqueResult();
return address;
}
這種情況下的問題是,當通過method1添加新地址時,由於method2命中數據庫(執行時與緩存不同步),當執行method2(因此不返回地址)時,它仍可能位於高速緩存中。 我發現的唯一解決方案是在method1之后添加“ flush”,但我真的不喜歡它。 您知道更好的方法嗎?
至少對於我來說,在某些方法中手動調用session.flush()並不是一個壞主意。
還有其他選擇:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.