私はこの数週間、春と休止状態を使用してきましたが、そこで常に何か新しいことを学んでいます。
現在、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;
}
ここでの問題は、それぞれのminYear
( )を、それらが持っている最も古い年 (最新の年) で埋めたいということです。maxYear
Person
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の使用をできるだけ避けたいだけなので、一時的な方法で集計値を保存する方法はありますか。