![](/img/trans.png)
[英]Is it possible to map two columns of table instead of two tables in Hibernate
[英]Hibernate : Map single VO to two tables
我有两个表Table1
和Table2
。 两个表的数据结构相同。 我对Table1
和Table2
都有一个VO。 我分别为两个表有两个.hbm.xml
文件Table1.hbm.xml
和Table2.hbm.xml
在我的Java代码中,根据条件,我需要保存到Table1
或Table2
if(someCondition)
{
session.saveOrUpdate(VO); //This should be for Table1
}
else
{
session.saveOrUpdate(VO); //This should be for Table2
}
我的问题是,由于VO相同,因此在决定保存哪个表时会发生冲突。
是否可以将相同的VO映射到两个表?
注意 :之所以有这样的要求,是因为Table1和Table2位于单独的表空间中。 一个是分区的,而另一个则没有。 这种奇怪的要求还有其他一些原因,这是我现在无法更改的架构。
我认为使用两个实体管理器有点过多。 您需要的是对表进行良好的抽象处理。
您可以多次映射同一个类,而只需要以不同的名称映射即可。
与将抽象实体(而不是具体实体)一起使用Factory或Builder来生成两个对象的一种良好的Repository模式相比,它将完成工作。 如果您采用这种方法,则不需要此IF-ELSE流程。
@MappedSuperClass
class AbstractMappedSomeTimes {
private mappedAttribute;
}
@Table("yourtablename")
public class MappedOnce extends AbstractEntity{
}
@Table("yourtablename")
public class MappedTwise extends AbstractEntity{
}
比起使用Repository可以处理AbstractMappedSomeTimes类型的对象而言。 您还可以创建一个Factory,该工厂将生成MappedOnce对象或MappedTwise对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.