Вопрос

У меня есть сводный класс, который содержит список качеств. Качество содержит строковое имя и значение int. Эти данные хранятся в денормализованной структуре БД, только в одной таблице, так и для резюме, так и для качества.

Качественный стол:

ID, AnmyFieds, QualityName1, QualityValue1, QualityName2, QualityValue2, QualityName3, QualityValue3

Для каждого имени качества и пары значений нового качества необходимо вставить в суммированные класс.

Как набрать это в Hibernate (сопоставление XML Hibernate)?

Это было полезно?

Решение

Не ясно, как Quality Объекты должны быть «вставлены» в Summary класс держателя, но я думаю, что пользовательский тип пользователя (либо o.h.u.UserType или o.h.u.UserCollectionType) Это путь, чтобы пойти сюда.

Обратитесь к разделу 5.2.3. Пользовательские типы значений В документации для более подробной информации (нельзя сказать о сопоставлении, просто укажите ваш пользовательский тип пользователя как type в картографии).

Другие советы

Мне удалось исправить это с помощью пользовательской реализации CompositeUsertype. Файл отображения выглядит следующим образом:

<property name="qualities" type="com.foo.bar.QualityCompositeUserType">
        <column name="linkName1" />
        <column name="linkQuality1" />
        <column name="linkName2" />
        <column name="linkQuality2" />
        <column name="linkName3" />
        <column name="linkQuality3" />
</property>

ReturnedClass в CompositeUsertype является List.Class, метод Nullsafeset получает коллекцию в качестве значенного аргумента. Это просто вопрос получения значений из списка и назначить их параметрам в подготовленном операторе. (и заполните NULL, если значения отсутствуют в списке качеств).

Метод Nullsafegeget проходит в течение Я просто создаю новый ArrayList, в котором новые объекты качества вставляются со значениями из результатов.

Я могу добавить полный пример, если интересно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top