Hibernate 一个数据库表的两个映射

Hibernate 一个数据库表的两个映射,hibernate,Hibernate,我正试图为一个架构错误找到解决方案,而我不是架构师:p 在Hibernate3中,同一个表是否可能有两个映射?第一个将一些惰性属性设置为true。第二个映射将某些惰性属性设置为false;此外,映射是相等的。我知道,这是一种奇怪的行为,但客户要求快速解决方案。非常快速的解决方案是将两个不同的类映射到同一个表。理论上,没有理由不这样做,但您应该小心。hibernate缓存(会话和二级缓存)将它们视为不同的,因此,如果在同一会话中使用这两个映射操作表行,则会有数据丢失的风险,因为hibernate不

我正试图为一个架构错误找到解决方案,而我不是架构师:p


在Hibernate3中,同一个表是否可能有两个映射?第一个将一些惰性属性设置为true。第二个映射将某些惰性属性设置为false;此外,映射是相等的。我知道,这是一种奇怪的行为,但客户要求快速解决方案。

非常快速的解决方案是将两个不同的类映射到同一个表。

理论上,没有理由不这样做,但您应该小心。hibernate缓存(会话和二级缓存)将它们视为不同的,因此,如果在同一会话中使用这两个映射操作表行,则会有数据丢失的风险,因为hibernate不知道它们引用的是相同的底层数据。

在获取实体时,您真的需要第二个映射吗?还是可以将“获取延迟”设置为true/false?我认为需要第二个映射,因为有两种不同的情况:在线和批处理读取相同的实体。在线进程已经设计了它的映射,其中lazy被设置为false。对于批处理过程来说,这是一个问题,因为lazy=false会导致读取所有层次结构;这是一个长任务的大问题。这就是架构问题:是否可以使用第二个映射(其中lazy设置为true)来避免更改“在线映射”?谢谢你的帮助,贝托拉米。