Java 在一个型号的Hibernate Spring中连接第三个表上的两个表

Java 在一个型号的Hibernate Spring中连接第三个表上的两个表,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有两个表,我想在Hibernate/Spring中将它们视为一个模型类,但是它们之间的唯一关系可以通过第三个表建立。例如 tableA { id integer <PK> username varchar2(25 byte) } tableB { personID varchar2(15 byte) <PK> divisionID integer positionID integer } tableC { personID var

我有两个表,我想在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)
}
我知道我在这里写的方式是不可能的,我只是想表达我的想法。当我稍后要保存或更新数据库时,我希望Hibernate能够更新每个属性来自的相应表


我已经探索了使用@Transient、@SecondaryTables和其他一些方法,但我还没有找到一个好方法来实现这一点。有没有可能按照我想要的方式来做呢?如果是,我应该使用什么方法/注释?如果没有,我应该采取什么替代方法?我对冬眠和春天还比较陌生,所以请容忍我。

我相信有办法做到这一点;我没有答案给你

但是你的问题向我表明你没有正确地思考Hibernate。这是一个ORM工具-对象关系映射。如果您仍然只考虑表和SQL,将值加载到原语中,那么Hibernate不是合适的工具


如果没有要将数据映射到的对象,我建议只使用Spring SimpleJdbcTemplate而不是Hibernate。

看看这个

为了让我的问题简单明了,我可能过于简单了。这只是一个更大的web应用程序的一个组件,到目前为止,Hibernate对它非常有用。如果您没有映射到域中的模型对象,我认为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...
}