@ManyToMany使用4个表

时间:2017-08-25 13:15:43

标签: java hibernate jpa persistence

schema

如何通过这两个表加入usersservice

当你通过1张桌子获得关系时,

@JoinTable会很完美。但在这种情况下该怎么办?

这可以在不为adminsadmin_to_service创建单独的实体的情况下实现吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试创建一个视图以用作Join表。我不知道你的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;

}