2011-04-19 44 views

回答

0

我會用Hibernate.initialze(..),但你也可以序列化對象(使用ObjectOutputStreamXMLEncoder。序列化機制會遍歷所有的屬性,它們將被初始化。您可以使用commons-郎SerializationUtils

+0

thanx的回覆,但對於Hibernate.initialize(屬性),我仍然必須給一個屬性,這是我想避免的。序列化的東西可能會起作用。這似乎是一種黑客解決方法來實現這一目標? – Julia 2011-04-19 12:48:39

+0

@Julia - 是的。我不知道任何非解決方法 – Bozho 2011-04-19 12:49:15

0

你是如何得出該物體?

這種通用方法(它通常被稱爲對象的「水化」)是要求一個連接抓取。這也正是ORM檢索子對象的數據與此同時通過使用連接爲父母提供數據,並使用這些數據來熱切地初始化孩子。

有不同的方法來索要連接抓取,主要提供者特有的,但你可以write it into portable JPQL

select p from Parent p join fetch p.children where ... 

但是,請注意,這將每個父多次返回 - 儘可能多的,因爲它有子。這有點奇怪,但它是如何工作的。

0

我同意湯姆,我使用fetch連接來取回我想要初始化的子對象。至於帶回多個Parent對象的查詢,我相信添加一個「DISTINCT」子句應該可以解決這個問題。