5

MYSQL データベースに主キーを持たないテーブルがありますが、2 つの列に一意のキーがあります。MyEclipse の Hibernate リバース エンジニア ツールを使用してそのテーブルのマッピングを作成すると、2 つのクラスが生成されます。有用なメソッドのほとんどは Id クラスにまとめられているようです。そのため、インスタンス化して保存してデータを保持するメソッドのようです。テーブル/マップされたオブジェクトの一意の行を表すために Id クラスが作成されていることは理解できますが、これを 2 つのクラスに分割することの用途は何ですか。 -接尾辞クラス?

私の同僚は、1 つのクラスだけで同じことを達成できると主張し、主キーを持たないこれらのテーブルにリバース エンジニアリングを使用することを嘲笑します。一方、MyEclipse の開発者は私よりもはるかに頭が良く、このようにするのには十分な理由があると思います。ある?

4

5 に答える 5

0

私は同じ問題に直面しています。テーブルにキーがない場合、2 つのクラスが生成されると思います。それ以外の場合、テーブルにキーがある場合は、1 つだけ生成されます。

少なくとも私にとっては、テーブルに主キーを追加した後、テーブルを表すクラスが 1 つだけ生成されます。主キーを削除すると、2 つのクラスが生成されます。

古いスレッドですが、誰かに役立つと思いました。

于 2015-04-22T11:37:48.730 に答える
0

あなたは私の友人を想定しすぎています。これらのツールは実際には MyEclipse チームのものではなく、Hibernate Tools プロジェクト (JBoss、Hibernate の開発者) のものです。

これは、すべてを推測できないプログラム ツールです。十分に注釈が付けられた単純なものにはかなり適していますが、必要なものを正確に生成しない場合があります。

id クラスは通常、複合主キー (複数の属性を使用するキー) を表すために必要です。コンポーネント クラスの Hibernate コンセプトを使用します。

ジェネレーターのオプションを少し調整することもできます。

あなたの場合は、同僚の言うとおりにするのが最善でしょう。独自のエンティティ クラスを作成します。

于 2008-11-20T21:53:09.437 に答える
0

Yout db に移動し、フィールドをすでに主キーとして設定しているかどうかを確認してから、休止状態のリバース エンジニアリング ファイルを確認し、複数のクラスを作成しないでください。

于 2015-11-12T09:51:41.103 に答える
0

リバース エンジニアリング ファイルで:

   <table schema="public" name="yourtable">
            <primary-key>
                <!-- generator may not be necessary for mysql -->
                <generator class="increment"></generator> 
                <key-column name="column_name_of_primary_key" />
            </primary-key>
        </table>
于 2009-07-02T15:26:52.743 に答える
0

Teradata インスタンスに対して Eclipse でツールを実行すると、同様の問題が発生しました。逆にするビューがいくつかありましたが、それらはスキーマに含まれていました。これで生成された AcxiomDataId クラスを取得していました。

<table catalog=".*" schema="U01TKE_GRPR_RADMT_VW" name="F_ACXM_MBR" class="AcxiomData">
    <primary-key>
        <generator class="increment"></generator>
        <key-column name="MBR_UNIQ_KEY" property="memberUniqKey" />
    </primary-key>
</table>

しかし、テーブル要素からスキーマとカタログ属性を削除すると、AcxiomDataId クラスを取得できませんでした。

<table name="F_ACXM_MBR" class="AcxiomData">
    <primary-key>
        <generator class="increment"></generator>
        <key-column name="MBR_UNIQ_KEY" property="memberUniqKey" />
    </primary-key>
</table>

それがなぜなのかわかりません。

于 2012-01-27T03:08:31.447 に答える