【问题标题】:JPA: mapping a View as Entity with a dummy IDJPA:将视图映射为具有虚拟 ID 的实体
【发布时间】:2017-02-01 13:13:31
【问题描述】:

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

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

有人遇到同样的问题吗?有什么方法可以指定 View 中真正不存在的虚拟 ID 列?

【问题讨论】:

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


    【解决方案1】:

    最好的方法是将标识逻辑放在视图本身中。

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

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

    【讨论】:

    • 我也想过这个解决方案,但我希望找到一个不需要修改视图的最佳“程序化”解决方案,谢谢;)
    • 祝你好运,但除了使用@IdClass@EmbeddedId 来表示保证不为空且唯一的列的组合之外,我不知道还有其他选择。跨度>
    猜你喜欢
    • 2012-07-04
    • 2018-12-08
    • 2015-06-19
    • 2013-12-10
    • 1970-01-01
    • 2019-12-29
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多