[英]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.