考虑使用构建器模式的Result
DTO:
package com.example;
public class Result {
int someValue;
public static class Builder {
private final Foo foo;
private final Bar bar;
public Builder(Foo foo, Bar bar) {
this.foo = foo;
}
public Result build() {
Result r = new Result();
r.someValue = /* compute value based on supplied Foo and Bar */;
return r;
}
}
}
现在,我想在HQL查询中创建构建器,例如:
select new Result.Builder(f, b) from Foo f, Bar b where ...
然而,我最终错误
无法找到类[com.example.Result.Builder]
一种解决方案是将Builder移动到一个单独的类中,但我喜欢整齐地包含其实体的Builder。
有没有办法让语法让Hibernate识别select子句中的内部类?
答案 0 :(得分:6)
事实证明我最终找到了解决方案;正确的语法是完全限定名称,内部类的$
分隔符,例如:
select new com.example.Result$Builder(f, b) from ...