我正在尝试使用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用于此模式的术语。
答案 0 :(得分:3)
通常在hibernate注释中使用@Embeddable和@Embedded。但是,使用映射文件时,可以使用组件标记。
http://vuknikolic.wordpress.com/2010/11/27/embeddable-with-hbm-xml/