2011-06-13 72 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属性的所有条目...