0

5列のテーブルがあります。2 つの列を合わせて、テーブルの主キーを構成します。休止状態を使用して、そのテーブルに対応するエンティティ クラスをインスタンス化しようとしています。問題は、主キーがクラスの 1 つのフィールドだけでなく 2 つのフィールドであることを hiberante に伝える方法です。必要なすべての主キー設定で既に作成しているため、hiberante にデータベース スキーマを作成させたくありません。

複合キーについて読みましたが、それは私には適していないと思います。結局のところ、テーブルは 1 つしかなく、コードには 1 対多または同様のカーディナリティはありません。

私はこのようなことを試しましたが、明らかに機能していません。

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
       <class name="blog.Message" table="MESSAGES">
       <id name="title" column="MESSAGE_TITLE"></id>
       <id name="author" column="MESSAGE_AUTHOR"></id>
       <property name="body" column="MESSAGE_BODY"/>
         // ....AND TWO MORE FIELDS

    </class>
    </hibernate-mapping>

それを行う方法は何ですか?複合キーは必須ですか? 前もって感謝します

4

1 に答える 1

1

理想的には、可能であれば、休止状態で自然キーを避ける必要があります。行の ID を管理するために使用できる単一の id 列を作成すると、Hibernate はより適切に機能します。

于 2012-05-02T22:50:42.150 に答える