2017-08-25 39 views
0

schema@ManyToMany使用4臺

如何加入通過這個兩個表usersservice

@JoinTable當你通過1張桌子進行關係時,它是完美的。但在這種情況下該怎麼辦?

這是可能的,不需要爲adminsadmin_to_service創建單獨的實體?

+0

,因爲用戶和服務不具備提供「admin_id」的任何方式(使用admin_to_service表)和不具備提供「ROLE_ID」的方式(使用管理員表),那麼你可以得出結論,你不能模型使用直接的JPA而不引入中間實體。任何JPA文檔顯示如何做OO關係 –

+0

雖然沒有直接映射,但可以使用JPA查詢 –

+0

這個關係是否需要更新? –

回答

0

您可以嘗試創建視圖以充當聯接表。我不知道你的FK引用是什麼,但這樣的:

create or replace view user_services_vw as 
select 
    a.user_id, 
    ats.service_id 
from 
    admins a 
inner join 
    admin_to_services ats on ats.some_col. = a.some_col 

然後,您可以模型作爲一個簡單的@ManyToMany。如果關係是隻讀的,這應該可以正常工作,但如果數據需要更新,您可能會遇到問題。

@Entity 
public class User { 

    @ManyToMany 
    @JoinTable(name = "user_services_vw") 
    private Set<Service> services; 

}