數據加載中……
          ejb 3.0 具名查詢和原生查詢的寫法列子。
          package com.vsc.ejb.persistence.query;

          import java.io.Serializable;
          import java.sql.Timestamp;

          import javax.persistence.CascadeType;
          import javax.persistence.ColumnResult;
          import javax.persistence.Entity;
          import javax.persistence.GeneratedValue;
          import javax.persistence.GenerationType;
          import javax.persistence.Id;
          import javax.persistence.JoinColumn;
          import javax.persistence.ManyToOne;
          import javax.persistence.NamedNativeQueries;
          import javax.persistence.NamedNativeQuery;
          import javax.persistence.NamedQueries;
          import javax.persistence.NamedQuery;
          import javax.persistence.SqlResultSetMapping;
          import javax.persistence.SqlResultSetMappings;
          import javax.persistence.Table;
          import javax.persistence.TableGenerator;

          import com.clindataware.cdms.ejb.persistence.study.Study;
          import com.clindataware.cdms.ejb.persistence.study.Subject;

          @Entity
          @Table(name = "cdms_query")
          //這里可以放多個具名查詢,有多個具名查詢必須要用到NamedQueries。
          @NamedQueries( {
                  @NamedQuery(name = "Query.statisticByItem", query = "select count(query.itemoid) as sum,query.eventpath,query.formpath,query.itemoid,query.isprocessed"
                          + "  from Query query "
                          + " where query.study.id=:studyid and query.isdisable='false'"
                          + " group by query.eventpath,query.formpath,query.itemoid,query.isprocessed"),
                  // sum, pid, pname, isp?
                  @NamedQuery(name = "Query.statisticByInvestigator", query = "select count(query.participantid) as sum,user.fullname,query.participantid,query.isprocessed"
                          + "  from Query query,Participant part,User user"
                          + " where query.study.id=:studyid "
                          + "   and part.studyid=:studyid "
                          + "   and query.participantid=part.user.id "
                          + "   and part.user.id=user.id "
                          + "   and query.isdisable='false' "
                          + " group by query.participantid,query.isprocessed,user.fullname "),
          })
          //這里可以放多個原生的具名查詢,有多個原生的具名查詢必須要用到NamedNativeQueries。
          @NamedNativeQueries({
                  // sum, pid, pname, isp?
                  @NamedNativeQuery(name = "Query.statisticBySite", query = "select count(b.id) as sum,b.name,b.id,a.isprocessed from " +
                                      "(" +
                                      " select query.isprocessed,org.siteid as org_siteid,subject.siteid as sub_siteid" +
                                      " from cdms_Query query, cdms_Organization_Study org, cdms_Subject subject" +
                                      " where query.studyid=:studyid and query.studyid=org.studyid " +
                                      " and query.subjectid=subject.id and query.isdisable='false'" +
                                      ") a" +
                                      " right join"+
                                      " (select distinct site.* from cdms_Query query, cdms_Organization site, cdms_Organization_Study org, cdms_Subject subject" +
                                      " where query.studyid=:studyid and site.id=org.siteid and query.studyid=org.studyid " +
                                      " and site.category=1 and site.id=subject.siteid" +
                                      " ) b on (a.org_siteid = b.id and a.sub_siteid = b.id) " +
                                      " group by b.id, b.name, a.isprocessed",
                                      resultSetMapping = "Query.statisticBySiteMapping"),
                  // sum, qtype, code, isp?
                  @NamedNativeQuery(name = "Query.statisticByCause", query = "select count(query.id) as sum,qtype.name as name,qtype.code as code,query.isprocessed as isprocessed from cdms_querytype qtype left join cdms_query query on ( query.studyid = :studyid  and query.querytype = qtype.code  and query.isdisable = 'false' ) group by qtype.name,qtype.code,query.isprocessed",
                                      resultSetMapping = "Query.statisticByCauseMapping")
          })
          //SqlResultSetMapping這定結果集返回的實體類型或標量值。
          @SqlResultSetMappings({
             
                  @SqlResultSetMapping(name = "Query.statisticByCauseMapping", columns = {
                          @ColumnResult(name = "sum"), @ColumnResult(name = "name"),
                          @ColumnResult(name = "code"), @ColumnResult(name = "isprocessed") }),
                  @SqlResultSetMapping(name = "Query.statisticBySiteMapping", columns = {
                          @ColumnResult(name = "sum"), @ColumnResult(name = "name"),
                          @ColumnResult(name = "id"), @ColumnResult(name = "isprocessed") })
          })

          public class Query implements Serializable {

              private static final long serialVersionUID = 5025535683766463922L;

              private Long id;

              private String correctedvalue;

              private String correctedcause;

              private Boolean isdisable;

              private Long lastmodifierid;

              private String queryvalue;

              private Subject subject;

              private Integer querytype;

              private Long creatorid;

              private Study study;

              private Boolean isprocessed;

              private Timestamp lastmodifydate;

              private String querynumber;

              private Long participantid;

              private Boolean iscorrected;

              private Timestamp createdate;

              private String querycause;

              private Integer pagenumber;

              private String itemoid;

              private String itemname;

              private String iteminformation;

              private String eventpath;

              private String formpath;

              private Timestamp enddate;

              public Query() {
                  super();
              }

              @TableGenerator(name = "queryGen", table = "cdms_seq", pkColumnName = "pkvalue", valueColumnName = "value", pkColumnValue = "cdms_query", allocationSize = 1)
              @Id
              @GeneratedValue(strategy = GenerationType.TABLE, generator = "queryGen")
              public Long getId() {
                  return this.id;
              }

              public void setId(Long id) {
                  this.id = id;
              }

              public String getCorrectedvalue() {
                  return this.correctedvalue;
              }

              public void setCorrectedvalue(String correctedvalue) {
                  this.correctedvalue = correctedvalue;
              }

              public String getCorrectedcause() {
                  return this.correctedcause;
              }

              public void setCorrectedcause(String correctedcause) {
                  this.correctedcause = correctedcause;
              }

              public Boolean getIsdisable() {
                  return this.isdisable;
              }

              public void setIsdisable(Boolean isdisable) {
                  this.isdisable = isdisable;
              }

              public Long getLastmodifierid() {
                  return this.lastmodifierid;
              }

              public void setLastmodifierid(Long lastmodifierid) {
                  this.lastmodifierid = lastmodifierid;
              }

              public String getQueryvalue() {
                  return this.queryvalue;
              }

              public void setQueryvalue(String queryvalue) {
                  this.queryvalue = queryvalue;
              }

              @ManyToOne(cascade = CascadeType.REFRESH)
              @JoinColumn(name = "subjectid", referencedColumnName = "id")
              public Subject getSubject() {
                  return this.subject;
              }

              public void setSubject(Subject subject) {
                  this.subject = subject;
              }

              public Integer getQuerytype() {
                  return this.querytype;
              }

              public void setQuerytype(Integer querytype) {
                  this.querytype = querytype;
              }

              public Long getCreatorid() {
                  return this.creatorid;
              }

              public void setCreatorid(Long creatorid) {
                  this.creatorid = creatorid;
              }

              @ManyToOne(cascade = CascadeType.REFRESH)
              @JoinColumn(name = "studyid", referencedColumnName = "id")
              public Study getStudy() {
                  return this.study;
              }

              public void setStudy(Study study) {
                  this.study = study;
              }

              public Boolean getIsprocessed() {
                  return this.isprocessed;
              }

              public void setIsprocessed(Boolean isprocessed) {
                  this.isprocessed = isprocessed;
              }

              public Timestamp getLastmodifydate() {
                  return this.lastmodifydate;
              }

              public void setLastmodifydate(Timestamp lastmodifydate) {
                  this.lastmodifydate = lastmodifydate;
              }

              public String getQuerynumber() {
                  return this.querynumber;
              }

              public void setQuerynumber(String querynumber) {
                  this.querynumber = querynumber;
              }

              public Long getParticipantid() {
                  return this.participantid;
              }

              public void setParticipantid(Long participantid) {
                  this.participantid = participantid;
              }

              public Boolean getIscorrected() {
                  return this.iscorrected;
              }

              public void setIscorrected(Boolean iscorrected) {
                  this.iscorrected = iscorrected;
              }

              public Timestamp getCreatedate() {
                  return this.createdate;
              }

              public void setCreatedate(Timestamp createdate) {
                  this.createdate = createdate;
              }

              public String getQuerycause() {
                  return this.querycause;
              }

              public void setQuerycause(String querycause) {
                  this.querycause = querycause;
              }

              public String getIteminformation() {
                  return iteminformation;
              }

              public void setIteminformation(String iteminformation) {
                  this.iteminformation = iteminformation;
              }

              public String getItemname() {
                  return itemname;
              }

              public void setItemname(String itemname) {
                  this.itemname = itemname;
              }

              public String getItemoid() {
                  return itemoid;
              }

              public void setItemoid(String itemoid) {
                  this.itemoid = itemoid;
              }

              public Integer getPagenumber() {
                  return pagenumber;
              }

              public void setPagenumber(Integer pagenumber) {
                  this.pagenumber = pagenumber;
              }

              /**
               * @return Returns the eventpath.
               */
              public String getEventpath() {
                  return eventpath;
              }

              /**
               * @param eventpath
               *            The eventpath to set.
               */
              public void setEventpath(String eventpath) {
                  this.eventpath = eventpath;
              }

              /**
               * @return Returns the formpath.
               */
              public String getFormpath() {
                  return formpath;
              }

              /**
               * @param formpath
               *            The formpath to set.
               */
              public void setFormpath(String formpath) {
                  this.formpath = formpath;
              }

              public Timestamp getEnddate() {
                  return enddate;
              }

              public void setEnddate(Timestamp enddate) {
                  this.enddate = enddate;
              }

          }


          posted on 2008-03-14 09:34 java flex 結合 閱讀(1447) 評論(3)  編輯  收藏

          評論

          # re: ejb 3.0 具名查詢和原生查詢的寫法列子。 2008-03-14 12:30 千里冰封

          應該再講講它們的用法以及差異啊
            回復  更多評論    

          # re: ejb 3.0 具名查詢和原生查詢的寫法列子。 2008-03-17 13:35 java flex 結合

          具名查詢 - 就是預先定義好ejb ql,然后在創建查詢時通過名稱來引用他們。為了能在不同的場合復用,你會在java中定義String類型的常量,同樣為了復用,你也可以預定義查詢。如果統一在一處定義好查詢,你就可以根據需要隨時對其進行調用好修改。
            回復  更多評論    

          # re: ejb 3.0 具名查詢和原生查詢的寫法列子。 2008-03-17 13:43 java flex 結合

          ejb ql語法豐富,應該能滿足絕大部分的查詢要求。不過有時候,可能你想用一下只有某家廠商的數據庫才提供的Native功能。這是我們就會用到原生查詢(Native Query)。
            回復  更多評論    

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 漾濞| 东光县| 大方县| 友谊县| 衡阳县| 珠海市| 车险| 鲜城| 宣武区| 乐安县| 连云港市| 繁昌县| 闽侯县| 三明市| 霸州市| 千阳县| 襄城县| 岱山县| 泾川县| 五莲县| 河北省| 石阡县| 吐鲁番市| 蓬溪县| 游戏| 乾安县| 黔西县| 松桃| 苏州市| 南岸区| 犍为县| 马龙县| 永宁县| 西贡区| 迁安市| 阜平县| 呈贡县| 乐陵市| 孟津县| 漾濞| 镇康县|