0

私はHibernateの初心者です。アプリケーションでHibernateアノテーションを使用してHibernate3を使用していますが、Struts1.3でアプリケーションを開発しています。

私の質問は:私はたくさんググったが、アノテーションを使用して休止状態でストアドプロシージャを呼び出す方法を理解できませんでした、私は簡単なシナリオを持っています:私のjspに2つのフィールドがあると仮定します1)コード2)名前、私は作成しましたそれらのレコードをテーブルに挿入するためのデータベース内のストアドプロシージャ。今私の問題はそれを実行する方法です

 List<MyBean> list = sessionFactory.getCurrentSession()
                          .getNamedQuery("mySp")
                        .setParameter("code", code)
                        .setParameter("name", name)

これを行う方法の正確なコードはわかりません。しかし、実際にはjdbcのバックグラウンドから来ているので、ストアドプロシージャを使用してデータベースからデータを選択するときに、これと同じことを行う方法がわかりません。

4

2 に答える 2

2

Hibernate は、SP を呼び出す多くの簡単な方法を提供します。

  1. ネイティブ SQL
  2. 注釈/XML マッピング ファイルとしてのネイティブ SQL の名前付きクエリ

次のリンクは、上記のそれぞれを実装する方法を示しています

http://www.mkyong.com/hibernate/how-to-call-store-procedure-in-hibernate/

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html#sp_query

休止状態を使用してネイティブ SQL クエリを実行するサンプル:

 Session session = getSession();
    SQLQuery sqlQuery = session.createSQLQuery("SELECT COUNT(id) FROM tableName WHERE external_id = :external_id");
    sqlQuery.setParameter("external_id", idValue);
    int count = ((BigInteger) sqlQuery.uniqueResult()).intValue();
    releaseSession(session);
于 2012-07-09T18:14:39.690 に答える
0

データベースに対して呼び出す場合と同じ SQL で Hibernate の SQLQuery を使用して、ストアド プロシージャを実行できます。たとえば、postgreSQL では次のようになります。

String query = "select schema.procedure_name(:param1)";
SQLQuery sqlquery = sessionFactory.getCurrentSession().createSQLQuery(query);
sqlquery.setInteger("param1", "this is first parameter");
sqlQuery.list();

それが役に立てば幸い。

于 2012-07-09T13:25:23.947 に答える