我正在尝试执行此查询,但在尝试实例化我的 PassageStatistics 对象时得到 IllegalArgumentException,该对象在其构造函数中采用长参数,当表为空(仅包含空值)时,这是存储库类中的查询方法:
@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 并捕获并在那里处理异常还是进行 2 个查询?
感谢正手!