2

Eclipse Hibernate Toolsを使用して、OracleデータベースからJPAアノテーションを使用してドメインクラスを作成します。シーケンスの生成を制御するために、hibernate.reveng.xmlに次のエントリを追加しました。

...
<primary-key>
<generator class="sequence">
<param name="sequence">SEQ_FOO_ID</param>
</generator>
</primary-key>
...

これにより、次の注釈が付けられます。

@SequenceGenerator(name = "generator", sequenceName = "SEQ_FOO_ID")

ただし、「allocationSize」を次のように設定する必要があります。

@SequenceGenerator(name = "generator", sequenceName = "SEQ_FOO_ID", allocationSize = 1)

これをhibernate.reveng.xmlで何らかの方法で設定することは可能ですか?

4

6 に答える 6

3

Guillaume Husta が言うように公式にはサポートされていませんが、この制限を回避するためのトリックを行うことができました。単に置く代わりに:

 <param name="sequence">MYSEQ</param>

ジェネレーターは最初と最後に引用符 (") のみを追加することに気付くかもしれません。そのため、SQL インジェクションで同様のことを行うことができます。実際には使用されていなくても、引用符を終了する jpa 注釈の別のパラメーターのみが必要です。たとえば、パラメータ「スキーマ」

   <param name="sequence">MYSEQ", allocationSize = 1, schema="MYSCHEME</param>
于 2016-10-14T11:13:57.697 に答える
2

はい、できます。リベンジクラスの戦略を書き直さなければなりません。

Hibernate ヘルプ センターにドキュメントがあります。

于 2010-09-20T11:19:24.293 に答える
1

遅いかもしれませんが、正しい構成は次のとおりです。

<hibernate-reverse-engineering>
    <schema-selection match-schema="SchemaName" />
    <table-filter match-name=".*"></table-filter>
    <table name="TableName">
        <primary-key>
            <generator class="org.hibernate.id.SequenceGenerator">
                <param name="sequence">SequenceName</param>
            </generator>
            <key-column name="ColumnName" />
        </primary-key>
    </table>
</hibernate-reverse-engineering>
于 2015-07-06T17:04:57.060 に答える
0

例えば:

<hibernate-reverse-engineering>
    <schema-selection match-schema="SchemaName" />
    <table-filter match-name=".*"></table-filter>
    <table name="TableName">
        <primary-key>
            <generator class="sequence">
                <param name="sequence">SequenceName</param>
            </generator>
            <key-column name="ColumnName" />
        </primary-key>
    </table>
</hibernate-reverse-engineering>

:)

于 2011-04-19T11:28:50.460 に答える