Jpa 使用Eclipselink在运行时进行Exchange实体表映射

Jpa 使用Eclipselink在运行时进行Exchange实体表映射,jpa,mapping,entity,eclipselink,Jpa,Mapping,Entity,Eclipselink,是否可以使用Eclipselink在运行时更改实体表映射? 我有一个用注释定义的实体视图映射。现在我有了业务需求:“如果这些视图为空,请尝试底层表”。因此,我必须从视图切换到基础表 视图只是表上的一个选择,有一些限制 何时需要检查视图是否为空 如果可以在启动时执行一次,您可以将此检查放在SessionCustomizer中并更改ClassDescriptor的表 如果每次查询时都需要这样做,那么这就更奇怪了。您可以定义一个MappedSuperclass和两个子类,一个映射到视图,一个映射到表,

是否可以使用Eclipselink在运行时更改实体表映射? 我有一个用注释定义的实体视图映射。现在我有了业务需求:“如果这些视图为空,请尝试底层表”。因此,我必须从视图切换到基础表


视图只是表上的一个选择,有一些限制

何时需要检查视图是否为空

如果可以在启动时执行一次,您可以将此检查放在SessionCustomizer中并更改ClassDescriptor的表

如果每次查询时都需要这样做,那么这就更奇怪了。您可以定义一个MappedSuperclass和两个子类,一个映射到视图,一个映射到表,然后在应用程序中决定使用哪个

您还可以定义另一个视图,以提供所需的结果

可以在运行时从会话中获取类描述符并对其进行更改,但这通常不是一个好主意,因为其他客户端/线程可以同时使用描述符/会话


或者始终映射到表,过滤查询中相关的内容(或其他连接条件),而不是使用视图。

非常有用的答案,谢谢。我将尝试MappedSuperclass方法,这对我来说应该是可行的。