2
我有以下表:休眠連接表限制
[表:列1,列2]
答:ID,名稱
B:ID,名稱
AB:IDA, idB
AB是一個連接表。
然後我對休眠B類
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name = "AB",
joinColumns = @JoinColumn(name = "idB"),
inverseJoinColumns = @JoinColumn(name = "idA"))
public List<A> getAs(){
//return the list of matching stuff
}
這工作完全正常此方法。
現在我想在Hibernate中做到這一點。SQL查詢:
select * from B inner join AB on B.id = AB.idB where AB.idA = 1234
從本質上講,「列出了我所有的B的引用一個ID爲1234」
我可以做直接的SQL,但是這不符合getAs()的用途
是否可以構造一個Criterion/Restriction子句來實現這一點?
是有意義的。順便說一句,如果我離開fetch = FetchType.EAGER,會發生什麼? –
@Ken Eager fetch意味着當你嘗試獲取你的'B'時,Hibernate會嘗試檢索所有相關的'A's。如果'A'也具有其渴望獲取映射的'B'集合,則同樣適用,等等。將所有提取設置爲渴望可能很容易導致您每次獲取單個實體時都會檢索整個數據庫。 – ChssPly76
默認情況下,集合屬性被視爲「LAZY」,這是由JPA規範規定的。 –