Dav*_*vid 2 java sql hibernate jpa hibernate-mapping
我想执行这样的查询:
SELECT Table1.COL1,
Table1.COL2,
(SELECT SUM(Table2.COL3)
FROM Table2
WHERE Table2.UID = Table1.UID) SUMOF
FROM Table1;
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我通常创建一个Criteria添加,只ProjectionList填充.
我创建了一个来计算... COL1COL2DetachedCriteriasum
现在,如何将这个分离的标准附加到主要标准?我的直觉说 - 这是某种需要添加到列表中的Projection,但我不知道如何.此外,不确定WHERE Table2.COL4 = Table1.COL5分离标准的工作原理.
此外,我确信此查询可能以不同的方式编写,例如使用join语句.如果有这样的方式运行它仍然很有趣.
DetachedCriteria 和主要的 CriteriaDetachedCriteria detachedCriteria = DetachedCriteria.forClass(Table2.class, "table2");
detachedCriteria
.setProjection(
Projections.projectionList()
.add(Projections.sum("table2.col3"), "sumCol3")
)
.add(Restrictions.eq("table2.uid", "table1.uid"))
;
Criteria criteria = session.createCriteria(Table1.class, "Table1");
criteria
.setProjection(
Projections.projectionList()
.add(Projections.property("Table1.col1"), "col1")
.add(Projections.property("Table1.col2"), "col2")
)
;
Run Code Online (Sandbox Code Playgroud)
@Entity
@Table(name = "Table1")
public class Table1 {
@Id
@Column(name = "uid")
public String getUid();
@Column(name = "col1")
public String getCol1();
@Column(name = "col2")
public String getCol2();
@Column(name = "col3")
public String getCol3();
@Column(name = "col4")
public String getCol4();
@Column(name = "col5")
public String getCol5();
}
@Entity
@Table(name = "Table2")
public class Table2 {
@Id
@Column(name = "uid")
public String getUid();
@Column(name = "col3")
public BigDecimal getCol3();
@Column(name = "col4")
public String getCol4();
@Column(name = "col5")
public String getCol5();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |