java - 使用 JPA 时如何在没有主键的情况下映射数据库 View

标签 java spring hibernate jpa sql-view

  • 我在没有明显主键(复合或其他)的 SQL 数据库中有 View
  • 我想通过 JPA 访问它们

我读到我应该能够像对待表格一样对待 JPA 中的 View (使用 @Table 注释等)。但是,如果没有主键,我必须有效地从每一列中创建一个复合键(事实上,这在 Hibernate 的逆向工程工具默认情况下似乎是这样做的)。

但是,如果我这样做,会产生不良的副作用。 例如

  • 必须编写指向主键属性而不是 View 的所有代码:

    myViewObject.getPrimaryKey().getFirstName()

  • 无法在 spring 存储库上使用“findBy...”方法(因为该属性是 View “标识符”的一部分,而不是它的实际属性之一)。

    <

我的问题是:如何映射 View ,以便我可以使用 JPA 轻松访问它们的属性?

注意:得知我使用的方法完全错误,我感到非常高兴。这似乎是一个常见的问题,肯定会有更好的解决方案。

最佳答案

您可以将UUID 列添加到 View 的每一行,这样您就可以将UUID 列用作@Id。 .

关于java - 使用 JPA 时如何在没有主键的情况下映射数据库 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31292050/

相关文章:

java - Spring/Hibernate Select Count(*) 查询自定义?

java - 将 JBPM 5.3 部署到 JBoss 7.1.1 时出现警告

更新时发生java.lang.NullPointerException?

java - REST 应用程序的 Spring Security 表单登录

java - 什么时候可以使用 FRAMESET

java - 线程 "main"org.hibernate.MappingException : Unknown entity: com. myApp.data.entities.User 中的异常

java - 如何在javafx中的tableview中显示多行单元格?

java - 在 Java 中确定 Selenium 驱动程序的类型

java - 如何在 ApplicationRunner 中正确访问安全的 Spring Data REST 存储库?

java - hibernate的orderBy和Collections.sort()的区别