我有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创建实例