休眠-获取时应用@Where



我在Hibernate实体类上使用以下注释

@Table(name="cms_user", schema="public")
@Where(clause = "deleted = false")
public class User {
..
}

因此,它不加载"是"的记录;软删除";。但是当我把这个实体作为另一个查询的一部分时:

queryRoot.fetch("cmsUser", JoinType.INNER);

此where子句不适用,并且删除的用户也是可见的。当然,我可以过滤掉它们,但我正在寻找一种有效的方法来将这个deleted = false设置在单个位置,@Where或其他一些hibernate类注释是一个很好的candiadate。

有没有什么方法可以注释hibernate类,以便deleted = false也应用于获取和联接?

我没有测试它,而是尝试将@Where注释添加到已联接的实体中,换句话说,添加到@OneToMany注释中。

@Where(clause = "deleted = false")
@OneToMany(mappedBy = "joinedEntity", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<User> userList;

最新更新