簡體   English   中英

帶有count和groupby查詢的休眠條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM