2

hibernate の内部クエリ内に set parameter() メソッドを追加する方法は?

私はこのようにしようとしましたが、すでにエラーがあります

これは私のコードです

Query query=session.createQuery("select eq.euipmentName,eq.type from Euipment eq where eq.id in(select euipment from Quotation qt where qt. supQuotation=:ids)");          
query.setParameter("ids",id);
list = (List<Euipment>)query.list();
4

3 に答える 3

4

私はあなたのクエリについていくつかの修正を行いました: 1. qt. supQuotation にスペースがあります。2 を削除しました。サブクエリの euipment にはエイリアスがありません。qt を追加します

String hql = 
    "select eq.euipmentName,eq.type " +
    " from Euipment eq " +
    " where eq.id in (select qt.euipment from Quotation qt where qt.supQuotation = :ids)";

Query query = session.createQuery(hql);          
query.setParameter("ids",id);
list = (List<Euipment>)query.list();

大丈夫なら教えて

OK でない場合は、ここにエラーを投稿して、クラスを hibernate マッピング ファイルに入れたかどうかを確認してください。

于 2013-08-22T12:44:47.860 に答える
1

休止状態のドキュメントから:

ネイティブ SQL クエリの実行は、Session.createSQLQuery() を呼び出すことによって取得される SQLQuery インターフェイスを介して制御されます。

  • createQuery()HQL 構文を使用して Query オブジェクトを作成します。
  • createSQLQuery()ネイティブ SQL 構文を使用して Query オブジェクトを作成します。

createQueryそのため、createSQLQueryネイティブ SQL クエリに置き換えます。

于 2013-08-22T12:34:25.627 に答える
0

基準で試す

Criteria c = getSession().createCriteria(Euipment.class, "e"); 
c.createAlias("e.quotation", "q"); // inner join by default 
c.add(Restrictions.eq("q.supQuotation", id));       
list = (List<Euipment>)c.list();
于 2013-08-22T14:11:45.943 に答える