【发布时间】:2013-11-28 08:51:48
【问题描述】:
使用以下代码,我可以成功检索用户的地址字段,为此我需要使用 Projection 定义其所有字段。想象一下地址有 100 个字段,在这种情况下我必须定义所有字段。
我想知道是否可以只返回客户的地址对象而不在 Proposition 中定义其所有字段?
我知道我可以检索地址的 id 并使用它来检索其对象,但我想知道是否有其他方法而不是 this 或定义其所有字段。
休眠
.....
Criteria cre = session.createCriteria(User.class, "user")
.createAlias("user.address", "addr");
cre.add(Restrictions.eq("user.id", ID));
ProjectionList pl = Projections.projectionList();
pl.add(Projections.property("addr.id").as("id"));
pl.add(Projections.property("addr.unit").as("unit"));
.......
cre.setProjection(pl);
Address address = (Address) cre.list().get(0);
我也使用了以下方法,但遇到错误(无法解析属性:地址:com.myProject.User)
pl.add(Projections.property("addr").as("address"));
Java
@Entity
public Class User {
@Id
@GeneratedValue
private long id;
@OneToOne
private Address address;
...
}
【问题讨论】:
标签: java hibernate hibernate-mapping