我正在尝试在 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。
如果有更好的方法,我愿意接受其他不使用命名查询的建议。