![](/img/trans.png)
[英]Spring Data JPA - Hibernate - OneToMany, ManytoOne bidirectional
[英]JPA/Hibernate: bidirectional OneToMany/ManyToOne relation only works unidirectional
我目前遇到的OneToMany / ManyToOne-Mapping問題。 映射看起來像這樣:
public class A implements Serializable {
@EmbeddedId
private AId id;
// Other stuff...
}
@Embeddable
public class AId implements Serializable {
@ManyToOne
@JoinColumn(name = "B_ID", nullable = false)
private B b;
// Other stuff...
}
public class B implements Serializable {
@OneToMany(mappedBy = "id.b")
private List<A> as;
// Other stuff...
}
如果我嘗試使用對象A訪問對象B一切正常,但反方向根本不起作用。 關系始終為null。
A objectA = findAById(id);
B objectB = objectA.getB(); // OK
// But... for example
objectB.getAs(); // returns null
我寫了一個小查詢來使用其主鍵獲取對象B的所有As:
SELECT as FROM B b, IN(b.as) as WHERE b.id = :id
這很完美,我得到了預期的結果。 我也檢查了數據庫中存在的內容,並且沒問題。 有沒有人知道為什么這種關系只能在一個方向上起作用?
問候,
亞歷克斯
這是因為默認情況下@onetomany有懶惰的提取。 你可以使用這個fetch = FetchType.EAGER來解決這個問題
public class B implements Serializable {
@OneToMany(mappedBy = "id.b", fetch = FetchType.EAGER)
private List<A> as;
// Other stuff...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.