2017-08-25 38 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; 

}