0

このクエリを実行しようとしていますが、コンストラクターで長いパラメーターを受け取る PassageStatistics オブジェクトをインスタンス化しようとすると IllegalArgumentException が発生します。テーブルが空 (null 値のみを含む) の場合、リポジトリ クラスのクエリ メソッドは次のとおりです。

@SuppressWarnings("unchecked")
@Override
public PassageStatistics getPassageStatisticsForAllStations() {
    Query query = 
            em.createQuery("SELECT NEW com.henrikpetersson.cartoll.tolldomain.domain.PassageStatistics(count(p), sum(price)) from Passage p");

    return (PassageStatistics) query.getSingleResult();
}

PassageStatistics オブジェクトは次のとおりです。

public class PassageStatistics {

    private long passageCount;
    private long revenue;

    public PassageStatistics(long passageCount, long revenue) {
        this.passageCount = passageCount;
        this.revenue = revenue;
    }

      public PassageStatistics() {}

}

ベストプラクティスとは? ラッパー Long を使用し、サービス クラスで getPassageStatisticsForAllStations を呼び出して try and catch し、そこで例外を処理するか、2 つのクエリを作成する必要がありますか?

ありがとうございます!

4

1 に答える 1