首页 > 解决方案 > 在 @OneToMany JPA 集合中使用 Where 子句

问题描述

我正在尝试使用此处建议的第一个解决方案来实现历史记录。

在我的项目中,我们有路线、站点、孩子以及每个孩子何时到达站点的记录。

更新停止时间后,我希望记录仍与该停止相关,但使用该停止在创建时的时间。

到目前为止,我遇到的唯一问题是使用 Hibernate 时,在获取路线的停靠点时,我想忽略标记为历史的停靠点。

我可以在路由中配置 @OneToMany 集合以仅使用 where 子句获取停靠点吗?

标签: javasqlhibernatejpaspring-data

解决方案


不,@OneToMany只是表示在底层被翻译成外键等的静态实体关系,以及一些关于急切/延迟检索、更新/删除级联的提示。

您需要为您的案例创建一个@NamedQuery包含where子句的内容。它使用 JPQL,因此您仍将与您的对象模型进行交互。

由于您正在使用spring-data,您还可以使用存储库方法,假设您有一个RouteRepositoryor StopRepository,您可以在其中获得非历史性StopRoute.

您没有包含任何代码示例,因此我无法提供更多详细信息。


推荐阅读