2

Bean インスタンスから Insert SQL クエリを生成する方法はありますか? おそらくHibernateコードを使用していますか?

例えば:

@Table(name = "tbl_a")
class A{

   @Column(name = "col_a")
   int a;

   @Column(name = "col_b")
   int b;
}

INSERT INTO tbl_a (col_a,col_b) VALUES (avalue,bvalue)

したがって、a = "val" と b = 5 を持つ A インスタンスを提供すると、次のようになります。

INSERT INTO tbl_a (col_a,col_b) 値 ('val',5) ??

編集

私はよく理解されていないようですので、説明させてください: Hibernate を使い続ける方法を知っています。私が欲しいのは、SQL クエリ自体を生成した実際のクラスです。最終的に DB にコミットされる同じクエリ。しかし、クエリ文字列が必要です。つまり、オブジェクトを取得して SQL クエリを含む単純な文字列を返すツール (または Hibernate のクラスを使用) が必要です。(ログにはありません)。

今は良くなっていることを願っています。

ありがとう、イドブ

4

2 に答える 2

1

オブジェクトを取得して SQL クエリを含む単純な文字列を返すツールはありませんが、 QueryクラスgetQueryString()のメソッドを使用できます。実行時パラメーターを除くHQL 文字列全体を取得します。SQL 文字列に関心がある場合は、Hibernate の log4j システムでDEBUGを有効にし、JDBCAppender またはカスタム Appender を使用してネイティブ SQL をキャプチャできます。

とにかく、このオプションはアプリを非常に遅くします (休止状態は多くのデバッグを生成します)。

于 2013-01-17T12:40:09.703 に答える
0

はい、sessionFactory.getCurrentSession().save(new A())インスタンスを直接挿入するために呼び出すことができます。実行された SQL は、説明したのと同じように見えます。次のようにして休止状態のデバッグをオンにすることで、これをテストできますhibernate.show_sql=true

于 2013-01-16T15:11:59.613 に答える