【发布时间】:2018-11-20 05:22:04
【问题描述】:
鉴于情况:数据库是在 Hibernate 尚未诞生时创建的,我们在这里谈论真正的遗产。 我的表从未删除过记录,只需在行上设置一个 active 标志以将条目标记为当前正在使用。查询通常如下所示:
SELECT * from A left join B on A.id = B.a_id and B.active = 1
在Java中定义了实体A和B,并且A有一个属性
@OneToMany
private Set<B> b;
如何注释属性以添加条件“and B.active=1”?
首选 JPA 解决方案,但如有必要,我们也可以使用休眠注释。
以类似的方式,我们遇到条目具有有效日期范围的情况,因此我们必须添加类似于
的条件"and B.active_From >= now() and (B.active_to is null or B.active_to < now())"
【问题讨论】:
-
你在使用 Spring Framework 和 JPA 吗?
-
Hibernate 特定的解决方案是这里唯一的选择。请参阅此处
@Where上的段落:baeldung.com/hibernate-dynamic-mapping。 Hibernate 还提供动态过滤器,但@Where似乎是您正在寻找的。 docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/…