java – 在hibernate select中创建对象

我有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 – line 1:48: unexpected token: ,

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

最佳答案 不确定我是否完全理解你想要实现的目标.但是您可以创建一个HQL查询(带有投影),以仅查询您设置的列,例如:

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

然后,为接口ResultTransformer提供实现,并使用query.setResultTransformer(yourTransformer)将其设置为查询对象.

结果转换器的实现负责为A和B创建实例

点赞