1
我想用Hibernate标准实现this。休眠:选择N行,但在一列中只有唯一值
比方说,我有这样(从链接)数据:
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"));
如何实现自连接部分?
不取笑,但你为什么不使用HQL因为我要动态地添加更多的限制,它的更简单 – 2012-02-01 05:26:51
。 HQL不好。不过,如果你以HQL的方式给我答案,我会很感激。 – 2012-02-01 05:46:15
@桑多,你好哥们..我想你现在可能已经得到了这个问题的答案。如果没有,让我知道,我会尽我所能。但我的另一个问题,根据此评论http://stackoverflow.com/posts/comments/51993306?noredirect=1,他说你写的'AlianToBeanNestedResultTransformer'为'一对多(又名集合)'的关系。如果所以,你能分享一下吗?我为'OneToMany'集合绝望的'AliasToBeanNestedResultTransformer' .. – 2015-08-17 16:06:12