是否有办法仅部分使用条件来获取关联的ManyToOne
关联实体?
我有以下案例
@Entity
public class Foo {
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Bar bar;
// getters/setters and lots other attributes
}
@Entity
public class Bar {
private String name;
@OneToMany(fetch = FetchType.EAGER)
private Collection<ComplexObject> complexObjects;
// getters/setters
}
我有一个Criteria
选择我的所有Foo
,我希望只与其关联的name
的{{1}}一起获取。我不希望将Bar
的集合加载到一起。有没有办法在不修改ComplexObject
的情况下实现这一目标?
我想要这个,因为我想向用户展示类似
的内容Bar
答案 0 :(得分:1)
但您可以只选择三个属性:
Criteria c = session.createCriteria(Foo.class, "foo");
c.createAlias("foo.bar", "bar");
c.setProjection(Projections.projectionList().add(Projections.property("foo.attr1"))
.add(Projections.property("foo.attr2"))
.add(Projections.property("bar.name")));
或者,更具可读性:
String hql = "select foo.attr1, foo.attr2, bar.name from Foo foo"
+ " inner join foo.bar bar";