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

除非其中一列的值为空,否则一切似乎都可以正常工作。发生这种情况时,JPA返回一个空对象。

有人有同样的问题吗?有什么方法可以指定视图中实际上不存在的虚拟ID列吗?

最佳答案

做到这一点的最好方法是将身份逻辑放在视图本身内。

一种解决方案是使用数据库功能,例如ROW_NUMBERROWID作为视图查询的一部分来完成此任务。当然还有其他一些,但是将其作为视图查询的一部分是最合乎逻辑的。

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

07-24 19:03
查看更多