0

2 つのテーブル間で内部結合を作成しましたが、機能しません。誰かができるだけ早く私を助けることができれば、それは私を大いに助けます.

前もって感謝します

次のようになります。

List<Bondetal> bondetals = session.createQuery("from Bondetal bd inner join bd.Bon b where bd.idbon = b.idbon and idprodus = " + idprodus +" and Bon.suma >=" + suma).list();

次のエラーが表示されます。

Exception in thread "AWT-EventQueue-0" org.hibernate.QueryException: could not resolve property: Bon of: sakila.entity.Bondetal [from sakila.entity.Bondetal bd inner join bd.Bon b where bd.idbon = b.idbon and idprodus = 2 and Bon.suma >=1]
4

1 に答える 1

0

参加できるようにするには、エンティティ間の関連付けが必要です。したがって、BonDetalエンティティは次のようになります。

@ManyToOne
@JoinColumn(name = "idbon")
private Bon bon;

idbonidbon列は関連付けによってマップされるため、プロパティを含めることはできません。

where bd.idbon = b.idbonまた、 Hibernateはエンティティが互いにどのように関連付けられているかを知っているため、クエリに句は必要ありません。したがって、クエリは次のようになります。

select bd from Bondetal bd 
inner join bd.bon b 
where bd.idprodus = :idprodus 
and b.suma >= :suma

また、SQLインジェクション攻撃やエスケープの問題を回避するために、クエリに値を連結するのではなく、名前付きパラメーターを使用する必要があります。

これらはすべて、 Hibernateのドキュメントで説明されています。このような急いでいる場合は、ランダムなクエリを試すのではなく、それを読む必要があります。

于 2012-06-21T21:34:54.970 に答える