Hibernate-将复合关系映射到非主键
我必须映射一个大型企业数据库模式。由于许多遗留应用程序都依赖于该模式,因此我无法将其从复合键更改为代理键(除了对约70%的数据库对象使用带有instead of触发器的视图),这导致我遇到了许多不知道如何克服的问题Hibernate-将复合关系映射到非主键,hibernate,nhibernate,jpa,nhibernate-mapping,Hibernate,Nhibernate,Jpa,Nhibernate Mapping,我必须映射一个大型企业数据库模式。由于许多遗留应用程序都依赖于该模式,因此我无法将其从复合键更改为代理键(除了对约70%的数据库对象使用带有instead of触发器的视图),这导致我遇到了许多不知道如何克服的问题 如何映射具有代理项(主、自动递增)键和复合唯一键的表,其中多个表在代理项键上形成多对一关系,同时多个旧表在复合唯一键上形成关系 当组合键上的多个关系共享同一组件(Naselja:Korisnik/Opcina、Korisnik/Grad)时,该怎么办? Hibernate告诉我不能使
1) -将自动递增列映射为主键 -为compositeid创建类,并使用属性ref将多个类映射到一个
<component name="compIdProperty" unique="true">
<property column="naselje" />
<many-to-one column="korisnik" class="Korisnik"/>
</component>
<many-to-one name="Naselja" property-ref="compIdProperty">
<column name="naselje" />
<column name="korisnik" />
</many-to-one>
2) 恐怕根本不可能使用hibernate
我看到的唯一可能的方法是将(Grad,optcina)映射为属性,并自己管理关联
3) 由于这是一个遗留模式,我会折衷地将多对一相加,并将多对一映射到Opcine和Gradovi中的Korisnik我的一个想法是,在所有Hibernate关系上设置Updateable=false,insertable=false,显式映射表中的每个字段并手动处理关系。。。这是可行的,但似乎非常错误:)因此,如果我以这种方式手动管理关联,是否有Hibernate的问题我应该知道?对于Hibernate不知道的事情,它不能干预。我现在发现,所有的抓取都是在这样映射时被迫进行的;有什么方法可以避免这种行为吗?除了不映射关联和手动管理之外否,因为NH需要引用对象的标识,而在使用property ref时,该标识不存在