我想在Hibernate中執行一個命名查詢。該查詢在這個映射文件中定義:休眠命名查詢與聚合函數
<?xml version="1.0"?>
<class name="MxePosition" table="MY_TABLE">
<id name="id" column="MY_ID" />
<property name="quantity" />
<property name="instrument" />
</class>
<sql-query name="getPositionsForPortfolio">
<return alias="position" class="com.example.domain.MxePosition"/>
<![CDATA[
SELECT
SUM(LEG_ONE_NOMINAL) AS {position.quantity},
ID_INSTRUMENT AS {position.instrument}
FROM MY_TABLE WHERE SRC_PORTFOLIO= :portfolio GROUP BY ID_INSTRUMENT
]]>
</sql-query>
的MxePosition類如下:
public class MxePosition {
private Long id;
private String instrument;
private double quantity;
public String getInstrument() {
return instrument;
}
public void setInstrument(String instrument) {
this.instrument = instrument;
}
public double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
我所試圖做的就是該命名查詢返回由另一列分組的一列的總和。然而,Hibernate正在拋出一個我懷疑是因爲查詢結果不包含ID列的錯誤。
18:06:44,728 ERROR JDBCExceptionReporter:101 - Column not found: MY1_1_0_
有沒有辦法解決這個問題?在Hibernate中必須可以執行包含GROUP BY子句的查詢,而不在結果中包含ID。
我打開其他建議,如果有更好的方法不使用命名查詢。
好的解決方案,這確實讓Hibernate保持高興。它有點解決方法,但我不能看到任何其他方式 – cowls