Я хочу реализовать это с критериями Hibernate.
Допустим, у меня есть данные вроде (по ссылке):
ID Name City Birthyear
1 Egon Spengler New York 1957
2 Mac Taylor New York 1955
3 Sarah Connor Los Angeles 1959
4 Jean-Luc Picard La Barre 2305
5 Ellen Ripley Nostromo 2092
6 James T. Kirk Riverside 2233
7 Henry Jones Chicago 1899
И я хочу реализовать это с помощью Hibernate (по ссылке):
SELECT P.*, COUNT(*) AS ct
FROM people P
JOIN (SELECT MIN(Birthyear) AS Birthyear
FROM people
GROUP by City) P2 ON P2.Birthyear = P.Birthyear
GROUP BY P.City
ORDER BY P.Birthyear ASC
LIMIT 10;
Если у меня есть сущность:
@Entity
@Table(name = "people")
public class People {
@Id
private int id;
@Column
private String name;
@Column
private String city;
@Column
int birthyear;
}
Тогда я могу составить критерий без самостоятельного соединения (это может не сработать):
Criteria criteria = sessionFactory.getCurrentSession()
.createCriteria(People.class, "people")
.setProjection(Projections.projectionList()
.add(Projections.property("people.id"))
.add(Projections.property("people.name"))
.add(Projections.property("people.city"))
.add(Projections.groupProperty("people.city)))
.addOrder(Order.asc("people.birthyear"));
Как реализовать самостоятельное соединение?