java - 在@OneToMany JPA集合中使用Where子句

标签 java sql hibernate jpa spring-data

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

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

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

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

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

最佳答案

不,@OneToMany仅指示底层的静态实体关系被转换为外键等,以及一些有关急切/惰性检索、级联更新/删除的提示。

针对您的情况,您需要创建一个带有 where 子句的 @NamedQuery 。它使用 JPQL,因此您仍将与对象模型进行交互。

由于您使用的是spring-data,您还可以使用存储库方法,假设您有一个RouteRepositoryStopRepository,您可以在其中获得您的路线的非历史性停靠点

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

关于java - 在@OneToMany JPA集合中使用Where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52739521/

相关文章:

java - 如何从 XML 中获取文本,同时忽略其他子元素文本

java - JNA for Windows API 函数 GetVolumePathNamesForVolumeName

SQLSTATE 42000(错误102) ')'附近的语法不正确

java - 如何使用 Spring 在 Hibernate 拦截器 Bean 中注入(inject) EntityManager?

"Enter"之后的 Java 清除文本字段

java - 在 JSP 中为表单操作使用相对路径

java - 在 Hibernate/C3P0 中处理连接池耗尽并避免死锁

hibernate - 可以将 Map 对象传递给 HQL

mysql - 按两列为每个用户组选择 3 条记录

mysql - 将 SQL 转储导入 MySQL 时出错 : Unknown database/Can't create database