一个Hibernate实体跨两个架构共享

一个Hibernate实体跨两个架构共享,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,我在一个继承的、非常遗留的应用程序中工作,出于某些原因,它可以跨两个数据库模式工作,模式A和模式K。用户选择一个“上下文”来执行操作,虽然这些上下文至少表面上被认为是相同的,特性发生了变化,数据库表在模式a中获得了新的列,而不是在模式K中。当然,每个模式都有一个实体表,但模式a比模式K多了几列。这就是问题所在 存在一个罕见的bug,该bug一直存在于使用模式A的用户操作中。但是,在设计该bug的解决方案时,团队意识到应用程序对模式A和模式K都使用一个Hibernate实体 是否可以在共享实体中为

我在一个继承的、非常遗留的应用程序中工作,出于某些原因,它可以跨两个数据库模式工作,模式A和模式K。用户选择一个“上下文”来执行操作,虽然这些上下文至少表面上被认为是相同的,特性发生了变化,数据库表在模式a中获得了新的列,而不是在模式K中。当然,每个模式都有一个实体表,但模式a比模式K多了几列。这就是问题所在

存在一个罕见的bug,该bug一直存在于使用模式A的用户操作中。但是,在设计该bug的解决方案时,团队意识到应用程序对模式A和模式K都使用一个Hibernate实体


是否可以在共享实体中为模式a注释不会在模式K中引入持久性错误的列?不能更改模式K以引入新列。

不能更改模式是什么意思?你能为此介绍一个观点吗?问题是不能映射其他架构中不存在的列,否则会遇到问题

如果至少可以添加一个视图,则可以使用该视图而不是表。数据库通常支持写入视图。对于其他模式中不存在的列,您有两个选项。将列标记为
insertable=false,updateable=false
,以便您只能读取它们,或者使用
@DynamicUpdate
并确保在使用不包含这些列的架构时不会更改这些列的值


没有风景,你就我所能看到的那么远,这是出于运气。您必须将这两个表映射为不同的实体,每个实体都指向一个特定的模式。

不能更改模式是什么意思?你能为此介绍一个观点吗?问题是不能映射其他架构中不存在的列,否则会遇到问题

如果至少可以添加一个视图,则可以使用该视图而不是表。数据库通常支持写入视图。对于其他模式中不存在的列,您有两个选项。将列标记为
insertable=false,updateable=false
,以便您只能读取它们,或者使用
@DynamicUpdate
并确保在使用不包含这些列的架构时不会更改这些列的值

没有风景,你就我所能看到的那么远,这是出于运气。您必须将两个表映射为不同的实体,每个实体针对一个特定的模式。

什么是不能更改模式?利用此应用程序的应用程序和工作流是脆弱的、陈旧的、不易理解的,并且应用程序的所有者害怕任何
ALTER
s,因此它们是“正确的”。您可以为此介绍一个视图吗?可能地这一点正在进行简要的考虑,并没有被排除在讨论之外。谢谢你的见解,我将把它排队等待接受。你说不能更改模式是什么意思?利用此应用程序的应用程序和工作流是脆弱的、陈旧的、不易理解的,并且应用程序的所有者害怕任何
ALTER
s,因此它们是“正确的”。您可以为此介绍一个视图吗?可能地这一点正在进行简要的考虑,并没有被排除在讨论之外。谢谢你的见解,我将把它排队等待接受。