JPA @manyToMany有条件

时间:2017-10-26 14:04:42

标签: java spring hibernate jpa

我得到了那些桌子:

  

用户 :( user_id)

     

网站 :( site_id,subsite)

     

User_site :( user_id,site_id)

我想要像:

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
    name = "user_site",
    joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
    inverseJoinColumns = @JoinColumn(name = "site_id", referencedColumnName)
@Where(clause = "site.subsite = false")
private Collection<Site> sites;

但这不起作用。我可以在网站选择上添加约束吗?

1 个答案:

答案 0 :(得分:2)

比在SQL级别上过滤更好,我建议您使用重写的getter中的Criteria来过滤Java中的HQL级别。

以下是示例(未经测试):

public List getList(boolean subsite) {
    Criteria c = sessionFactory.getCurrentSession().createCriteria(Site.class);
    c.add(Restrictions.eq("site.subsite", subsite);
    return (List<Site>) c.list();
}