【发布时间】:2013-05-19 18:51:44
【问题描述】:
在过去的几周里,我一直在使用 spring 和 hibernate,而且我一直在那里学习新东西。
现在我有一个问题想用 Hibernate 中的 Projections 解决。
假设有一个模型Person,并且该模型有很多Car。以下是类定义的大致样子:
public class Person implements java.io.Serializable {
private Integer id;
private String name;
private List<Car> cars;
private Integer minYear; // Transient
private Integer maxYear; // Transient
}
public class Car implements java.io.Serializable {
private Integer id;
private Integer year;
}
这里的问题是我想让每个Person 的minYear (maxYear) 由他们拥有的cars 的最早年份(最新年份)填充。
后来我找到了使用Projections的解决方案,但我偶然发现了org.hibernate.QueryException: could not resolve property: minYear of: model.Person,这是db操作的代码:
Criteria criteria = sessionFactory.getCurrentSession().createCriteria("model.Person");
criteria.add(create(personInstance));
criteria.createAlias("minYear", "minYear");
criteria.setProjection(Projections.min("cars.year").as("minYear"));
有没有办法使用Projections 将聚合值存储在瞬态方法中,因为我只是想尽可能避免使用纯 SQL 和 HQL。
【问题讨论】:
标签: java spring hibernate hql pojo