我有两张表,我想在Hibernate/Spring中将它视为单个模型类,但是他们唯一的关系可以通过第三个表建立。例如...在单个模型中的第三个表上连接两个表Hibernate Spring
tableA {
id integer <PK>
username varchar2(25 byte)
}
tableB {
personID varchar2(15 byte) <PK>
divisionID integer
positionID integer
}
tableC {
personID varchar2(10) <FK>
username varchar2(25 byte)
}
虽然这将是非常好的,简单的添加PERSONID作为tableA的列,情况不允许。我会,不过,想与这些表在Hibernate中使用一个模型,比如下面的一个互动......
@Entity
@Table(name="tableA")
public class myTable {
@Id
@GeneratedValue
private int id;
private String username;
@Formula("(select distinct tableC.personID from tableC where upper(tableC.username) = upper(THIS_.username) and tableC.personID is not null)")
String personID;
@Formula("(select distinct tableB.divisionID from tableB where tableB.personID = THIS_.personID)")
int divisionID;
@Formula("(select distinct tableB.oositionID from tableB where tableB.personID = THIS_.personID)")
int positionID;
//getters, setters, etc...
}
我知道,我已经在这里写的方式是不可能的,我只是想传达这个想法。当我稍后保存或更新数据库时,我希望Hibernate能够更新每个属性出现的相应表。
我已经探索过使用@Transient,@SecondaryTables和其他几个,但我还没有找到一个好方法来完成这项工作。是否有可能以我想要的方式做到这一点?如果是这样,我应该使用什么方法/注释?如果不是,我应该采取什么替代方法?我对Hibernate和Spring相对来说比较新,所以请耐心等待。
在试图让我的问题那么简单,我可能过于简化。这只是Hibernate迄今非常有用的一个更大的Web应用程序的一个组件。 – hartz89
你不必为所有事情都使用Hibernate。如果你没有映射到你的域中的模型对象,我会说Hibernate不适用。 – duffymo