簡體   English   中英

在單個模型Hibernate Spring中將第三個表連接起來

[英]Joining two tables on a third in a single model 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中的一列會非常好,但是情況不允許。 但是,我想使用休眠中的一種模型與這些表進行交互,例如下面的一種...

@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。 這是一個ORM工具- 對象 -關系映射。 如果您仍然只考慮表和SQL,將值加載到基元中,那么Hibernate不是正確的工具。

如果您沒有將數據映射到的對象,我建議僅使用Spring SimpleJdbcTemplate而不是Hibernate。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM