0

以下のクエリを実行すると、Long にキャストできないオブジェクトのリストが表示されます

String queryString = "select sum(cat.varaible1), sum(cat.varaible2) from Enrollment as cat where cat.created >= :startDate and cat.created <= :endDate";

sum(cat.varaible2) を削除すると、長い値を含むリストが返されます。

String queryString = "select sum(cat.varaible1) from Cat as cat where cat.created >= :startDate and cat.created <= :endDate";

なぜこうなった?説明してください

4

1 に答える 1

0

基本的には、JPA がプロジェクション クエリを処理する方法です。

SELECTステートメントに単一の式がある場合、結果リストは適切に入力されます。キャストするかTypedQuery、最初からライトを使用するかを選択できます。

SELECTステートメントに複数の式がある場合、結果はCollectionof Object​​ 配列になります。あなたの場合、各配列には 2 つの要素があり、どちらも type になりLongます。

適切な結果の型を取得したい場合は、専用のクラスを定義して結果を結合し、コンストラクター式を使用できます。

select new com.example.SumSum(sum(cat.varaible1), sum(cat.varaible2)) from ...
于 2013-01-24T10:10:37.313 に答える