在JPA

2014-02-07 54 views
5

中建立多對多緩存關係我在UserRole之間存在多對多的關係。還有第三個名爲UserRole的表映射爲連接表。在JPA

在JPA中,我可以使用@Cachable來緩存UserRole;但是,當我嘗試讀取與定義爲EAGERUser關聯的Role時,將執行數據庫查詢以從連接表中獲取值。

如何緩存UserRole之間的連接表?

+0

這類似於http://stackoverflow.com/questions/17388780/second-level-caching-for-one-to-many-associations但是這是特定於休眠 – Kaunteya

+1

把@cacheable是你所需要做的,那麼這關係到你的JPA實現是否支持緩存關係字段。其他一些JPA實現(例如DataNucleus JPA)也支持這一點。 – DataNucleus

+0

看起來像hibernate不支持它,雖然有其他註釋可用於休眠,可以實現這一點。感謝您的答覆! – Kaunteya

回答

0

決定基於here您的緩存併發策略和你的公會的頂部使用@Cache:

@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "user_roles") 

確保用@Cacheable的兩個實體(在這種情況下,用戶和角色)標記了。