如果我有一个名为 Foo 的实体,看起来有点像这样:
@Entity
public final class Foo {
private int id;
private String name;
...
}
我想检索 ID 大于 10 的 Foo 对象的名称。如果我已经有了 Foo 对象的集合,我可以这样做:
List<Foo> foos = ...
Query filter = session.createFilter(foos, "where id > :id");
filter.setInteger("id", 10);
List filteredFoos = filter.list();
有没有一种方法可以创建上述过滤器,以便我检索字符串列表(即 Foo 名称)而不是我必须像这样手动过滤掉的 Foos 列表:
for (Foo foo : filteredFoos) {
String name = foo.getName();
...
}
最佳答案
List filteredFoos = session.createFilter(foos, "where id > :id")
.setInteger("id", 10).list();
List filteredFooNames = session.createFilter(filteredFoos, "select name").list();
或者试试这个。我不确定这是否有效,但前者肯定有效。
List filteredFooNames = session.createFilter(foos, "select name where id > :id")
.setInteger("id", 10).list();
关于java - 实体列表上的 Hibernate 过滤器,但只检索其中一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3983795/