2011-06-13 71 views
0

我使用hibernate從數據庫中獲取對象與AliasToBeanResultTransformer。 例如:冬眠與2個對象之間的關係

執行Session.createSQLQuery( 「選擇COL_1 COL1,從表COL_2 COL2」)setresulttransformer(新AliasToBeanResultTransformer(MyClass.class))

和MyClass的具有COL1,COL2作爲成員。

是有可能做以下的事情: 有一個MyClass類,將有作爲成員名單 的填充這個成員與相關表中的相關行的名單,但沒有做2個查詢和迭代一個循環,會創建所需的對象?

意思是說,實現hibernate的2個實體之間的關係,但是與我自己的實體?

謝謝。

+0

你想MyClass的類的成員作爲「List」而不是兩個成員變量「col1」和「col2」? – 2011-06-13 09:48:40

+0

我如何接受答案? – AAaa 2011-06-13 10:13:33

+0

好的,謝謝。我會重述這些問題。使用AliasToBeanResultTransformer,我可以將查詢結果存儲到未映射的對象中。我可以使用AliasToBeanResultTransformer或其他方法以嵌套的方式執行此操作嗎?意思是說,如果該對象的成員是一個對象itslef,那麼我想要涉及到原始對象? – AAaa 2011-06-13 10:41:57

回答

0

不知道我是否再次正確地問題。但如果你想是這樣的:

class MyClass{ 
    private ClassAnother; 
} 

這意味着你想的MyClass成員作爲ClassAnother而不是所有「col1」和「COL2」,那麼答案是還沒有。

您只需要以「col1」和「col2」作爲參數來定義構造函數。

希望這會有所幫助!

編輯:根據您的意見,您的類將是:

class ClassA{ 
    private List<ClassB> classBList; 
} 

你想要得到它在一個SQL查詢填充。如果這種理解是正確的,那麼這是不可能的,因爲結果集會爲ClassB的每個記錄返回ClassA的字段的重複列。

+0

假設您有2個hbm文件和2個相應的對象。他們有一對多的關係。如果我使用這些hibernate對象並在它們上查詢 - 一切正常。現在,假設我不知道整個對象,但每個對象只有2個字段。通常我會創建一個新的對象,包含我想要的字段,並使用AliasToBeanResultTransformer。但是,我不能這樣做,因爲它不是正常的領域。對象A具有對象b的列表。我如何使查詢填充列表,就好像它是一個正常的hibernate查詢? – AAaa 2011-06-13 11:40:12

+0

請參閱編輯的回覆! – 2011-06-13 11:49:26

+0

@Sandeep Jindal我正在休眠.. – AAaa 2011-06-13 11:51:13

0

如果你正在尋找純粹檢索列表,則這個HQL應該做的伎倆

select clasA.classBList from ClassA clasA 

此查詢所得到classbList屬性的所有條目...