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;
}
}
私がやろうとしているのは、名前付きクエリを取得して、別の列でグループ化された1つの列の合計を返すことです。ただし、クエリ結果にID列が含まれていないため、Hibernateがエラーをスローしていると思われます。
18:06:44,728 ERROR JDBCExceptionReporter:101 - Column not found: MY1_1_0_
これを回避する方法はありますか?Hibernate内で、結果にIDを含めずにGROUPBY句を含むクエリを実行できる必要があります。
より良い方法があれば、名前付きクエリを使用しない他の提案を受け入れます。