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

这通常在休眠注释中使用 @Embeddable 和 @Embedded 来解决。但是,在使用映射文件时,您可以使用组件标记。

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

于 2012-07-28T18:58:08.167 回答