java - JPA:使用虚拟 ID 将 View 映射为实体

标签 java entity-framework hibernate jpa spring-data-jpa

我正在尝试将数据库 View 映射到JPA实体。由于实体需要 ID,我在 StackOverflow 中寻找解决方案,发现最好的方法是将所有列设置为 ID

一切似乎都工作正常,除非其中一列具有空值。当它发生时,JPA 返回一个 null 对象。

有人遇到同样的问题吗?有没有办法指定 View 中确实不存在的虚拟 ID 列?

最佳答案

做到这一点的最佳方法是将身份逻辑放置在 View 本身内部。

一种解决方案是使用 ROW_NUMBERROWID 等数据库函数作为 View 查询的一部分来完成此操作。当然还有其他方法,但是将其作为 View 查询的一部分是最合乎逻辑的。

但是,我建议您将此类实体标记为@Immutable,因为数据是从只读 View 中获取的。这只是为了防止代码中出现问题或错误,您可能尝试修改此类实体,但这是不允许的。

关于java - JPA:使用虚拟 ID 将 View 映射为实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980710/

相关文章:

c# - Entity Framework 6 - 调用 SaveChanges() 时未设置

java - 在 hibernate 中加载百万行

java - 使用 JPA 进行多项选择

hibernate - 使用正确语法的HQL联接查询上的无效查询

linq - 如何提高 LINQ to EF 性能

java - 在 Swing 中覆盖 MouseWheelListener

java - 在 Java 中重构 Import 语句

java - 从 Java 代码注入(inject) JSP EL 和/或 JSTL 标记

c# - 如何使用 ASP.NET Core 托管生成 Blazor wasm 脚手架 CRUD (EF)

java - 无法添加 sip 授权 header