在hibernate select中创建对象

时间:2010-12-02 12:28:23

标签: java hibernate hql

我有2个班级:

class A {
B b;

public A() {}
public A(B b) { setB(b); }
...
}

class B {
int id;
public B(int id) { setId(id); }
}

在hql中我想这样选择:

select new A( new B(a.b.id) ) from A a

但我收到了错误

  

org.hibernate.hql.PARSER - 第1:48行:意外令牌:,

是否可以在参数中创建对象,或者只选择字段并在构造函数中创建它?

2 个答案:

答案 0 :(得分:1)

不确定我是否完全理解你想要达到的目标。但是你可以创建一个HQL查询(带有投影),只查询你所设置的列,例如:

select a.whatever, b.id from A a join a.b b

之后,您为界面ResultTransformer提供了一个实现,并使用query

将其设置为query.setResultTransformer(yourTransformer)对象

您的结果转换器实现负责为AB

创建实例

答案 1 :(得分:1)

也许考虑编写自己的函数来构建查询和使用StrinBuilder类 - 使用hql.append而不是写出查询!!!

import org.hibernate.Hibernate; import org.hibernate.search.FullTextQuery; import org.hibernate.search.FullTextSession; import org.hibernate.search.Search;

不确定它是否有帮助,否则去查看cyclos web应用程序 - 它包含大量查询和java文件。它的开源和使用全面的休眠

问候