Я пытаюсь отобразить три столбца таблицы в трех примитивных массивах. Но что бы я ни пытался, я не могу заставить это работать. Вот код:
class Parent {
private Component component;
}
class Component {
private Parent parent;
private int[] valuesOne;
private int[] valuesTwo;
private double[] valuesThree;
}
Отображение гибернации:
<class name="com.package.Parent" table="parent">
<id name="id" column="id" access="field" type="int">
<generator class="increment"/>
</id>
...
<component name="component" access="field">
<many-to-one name="parent" class="com.package.Parent" insert="false" update="false" fetch="join" column="id" access="field"/>
<primitive-array name="valuesOne" table="component" access="field">
<key column="parent_id"/>
<index column="index"/>
<element column="value_one" type="int"/>
</primitive-array>
<primitive-array name="valuesTwo" table="component" access="field">
<key column="parent_id"/>
<index column="index"/>
<element column="value_two" type="int"/>
</primitive-array>
<primitive-array name="valuesThree" table="component" access="field">
<key column="parent_id"/>
<index column="index"/>
<element column="value_three" type="double"/>
</primitive-array>
</component>
</class>
Таблица базы данных:
CREATE TABLE parent (
id INTEGER NOT NULL AUTO_INCREMENT,
...
)
CREATE TABLE component (
id INTEGER NOT NULL AUTO_INCREMENT,
parent_id INTEGER NOT NULL,
index INTEGER NOT NULL,
value_one INTEGER NOT NULL,
value_two INTEGER NOT NULL,
value_three DECIMAL NOT NULL
)
Теперь эта половина работает. Hibernate создаст для каждого значения отдельный запрос, например:
Hibernate:
insert
into
component
(parent_id, index, value_one)
values
(?, ?, ?)
То, что я на самом деле хочу, это:
Hibernate:
insert
into
component
(parent_id, index, value_one, value_two, value_three)
values
(?, ?, ?, ?, ?)
Как мне добиться этого с помощью сопоставления Hibernate?