我有一個類型爲Set的幾個字段的實體。當我從數據庫中檢索實體時,即使數據庫中的關聯正確,該集合也始終爲空。持久集是空的休眠
@Valid
@NotNull
@OneToMany(fetch = FetchType.EAGER)
private Set<Location> locations;
我已經嘗試啓用渴望提取強制hibernate加載它的實體,但它總是空的時候的關聯。非集合類型的其他字段正確填充。
我從來沒有見過這個與hibernate之前,我做錯了什麼?
感謝
我有一個類型爲Set的幾個字段的實體。當我從數據庫中檢索實體時,即使數據庫中的關聯正確,該集合也始終爲空。持久集是空的休眠
@Valid
@NotNull
@OneToMany(fetch = FetchType.EAGER)
private Set<Location> locations;
我已經嘗試啓用渴望提取強制hibernate加載它的實體,但它總是空的時候的關聯。非集合類型的其他字段正確填充。
我從來沒有見過這個與hibernate之前,我做錯了什麼?
感謝
不是100%,但99%的把握認爲你需要添加cascade
您@OneToMany
- 默認級聯沒有級聯可言,也就是說如果你堅持你的實體,該Location
收集不會持久..
試試這個:
@Valid
@NotNull
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Location> locations;
換句話說,你的問題是不是沒有被提取的集合,但它沒有被擺在首位堅持(你有沒有看到anythi ng的位置和連接表?)
編輯 - 我現在看到你寫的關聯是正確的,所以你堅持你的位置對象分開?
我想你錯過了mappedBy屬性。
@OneToMany(fetch = FetchType.EAGER, mappedBy="fieldname")
如果字段名應該是引用字段的位置實體名稱