私はエンティティを持っています:注文の詳細。これは次のように次のようになります。基準と予測
@ManyToOne
public Product getProduct() {
return this.product;
}
public void setProduct(Product product) {
this.product = product;
}
@Column(name="amount",nullable = false)
public int getAmount() {
return this.amount;
}
public void setAmount(int amount) {
this.amount= amount;
}
@Transient
public void setSum_amount(double sum_amount){
this.sum_amount=sum_amount;
}
私が注文の詳細テーブルに注文の詳細、製品によってグループ、および各製品の量のリストを取得しようとしています。
これ
はそれを行うには、私のコードです:session=sessionFactory.openSession();
List<OrderDetail> od=session.createCriteria(OrderDetail.class)
.setProjection(Projections.projectionList()
.add(Projections.sum("amount"),"sum_amount")
.add(Projections.groupProperty("product"))
)
.setResultTransformer(Transformers.aliasToBean(OrderDetail.class))
.list();
問題は私がやって、製品のプロパティにアクセスできないことである
「od.getProduct()のgetName()。」私は、NullPointerExceptionが取得どのように私はそれを修正することができますか?
私はちょうどより多くの量を持っている製品を注文詳細の表、ベストセラー製品を取得したい。 – cracq
あなたの基準は 'OrderDetail.class'ではなく' Product.class'の上に構築されるべきです。結果は製品になります。あなたは望みの結果をもたらすSQLクエリーを構築しましたか?それから始めると、Hibernateクエリーを理解するのがずっと簡単になります。 –
私はこれらの文の正しさについてはわかりません: 'Orderdetailからのod.idproduct Sum(od.amount)の選択od.idproduct order by Sum(od.amount)'または 'od.idproduct sum(od .amount)from OrderDetail od.idproduct order by sum(od.amount)=(OrderDetailからod.amountを選択し、od.idproduct order by 1 descで上位10個を選択) 'しかし、とにかく、 Criteriaを使ってそれを行う方法を知っています。 – cracq