[英]hibernate criteria with count and groupby query
我需要將以下查詢轉換為休眠條件查詢。 請幫忙
由於投票表上的復合主鍵,我以@Embeddable分隔了主鍵,因此以某種方式跟隨createQuery無法正常工作
session.createQuery("select V.Vote_Option, count(V.Vote_Option) from Votes V where V.Event_ID ="+eventId+" group by V.Vote_Option").list()
我嘗試使用以下條件。 需要幫助來糾正它。
Criteria criteria = session.createCriteria(Votes.class);
criteria.add(Restrictions.eq("Event_ID", eventId));
criteria.setProjection(Projections.projectionList()
.add(Projections.property("Vote_Option"))
.add(Projections.property("count(Vote_Option)"))
.add(Projections.groupProperty("Vote_Option")));
List<String> showVotes= criteria.list();
以下是我的實體的結構
@Entity
@Table(name="Votes")
public class Votes {
public Votes(){}
@EmbeddedId
private Vote vote;
@Column(name = "Vote_Option")
private int Vote_Option;
//setter getters...
和嵌入式主鍵的可嵌入對象
@Embeddable
public class Vote implements Serializable{
public Vote(){}
@Column(name="Event_ID")
private int Event_ID;
@Column(name="Voter_MSISDN")
private long Voter_MSISDN;
//setter getters...
請在這里提出一個更好的方法。
add(Projections.property("count(Vote_Option)"))
無法正常工作。 您需要使用criteria.setProjection(Projections.rowCount())
來支持計數。
順便說一下,我使用createQury來實現列表,如下所示:使用可嵌入實體進行映射
從V.Event_ID更改為V.vote.Event_ID ...投票為@Embeddable
session.createQuery("select V.Vote_Option, count(V.Vote_Option) from Votes V where V.vote.Event_ID ="+eventId+" group by V.Vote_Option").list();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.