0

Hibernate を使用して、次のようなオブジェクトを保存/ロードしようとしています (これらはアウトラインです。簡潔にするためにアクセサーを省略しました) Item.hbm.xml

class Item {
  String name;
  Vec3d position;
}

class Vec3d {
  double x;
  double y;
  double z;
}

データベース スキーマ:

create table item (
  item_id bigint primary key,
  name varchar(64) not null,
  x double not null,
  y double not null,
  z double not null
);

Item.hbm.xmlこれまでのところ、基本的には次のようになります。

...
<class name="Item" table="item">
  <id name="id" column="item_id">
    <generator class="sequence" />
  </id>

  <property name="name" type="string" />
  <!-- ??? How do I map the position ??? -->
</class>
...

位置ベクトルを単一のオブジェクトとして取得する方法に関するドキュメントは見つかりませんが、Item クラスと同じ行にフィールドとして格納されます。それを別のテーブルに格納して、アイテムを読み取るためだけに結合するのは無駄に思えます。

答えを見つけるのに苦労したのは、Hibernate がこのスキーマに使用する用語を知らないことが原因である可能性があります。

4

1 に答える 1

4

これは通常、hibernate アノテーションで @Embeddable および @Embedded を使用して対処されます。ただし、マッピング ファイルを使用する場合は、component タグを使用できます。

http://vuknikolic.wordpress.com/2010/11/27/embeddable-with-hbm-xml/

于 2012-07-28T18:58:08.167 に答える