Hibernate:在映射对象中封装次要对象

时间:2012-07-28 18:22:22

标签: java hibernate

我正在尝试使用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类相同的行中的字段。将它存储在一个单独的表中并且只是为了读取一个Item而产生一个连接似乎很浪费。

我找到答案的麻烦可能来自于不了解Hibernate用于此模式的术语。

1 个答案:

答案 0 :(得分:3)

通常在hibernate注释中使用@Embeddable和@Embedded。但是,使用映射文件时,可以使用组件标记。

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