2013-12-02 3 views
1

У меня есть следующее соотношение: Форма - [заказ] - Атрибут. Одна форма имеет n атрибутов и атрибут может принадлежать n формам. Отношение требует сохранения дополнительного имущества: порядок.Отображение составного элемента Hibernate

Так у меня есть форма класса, атрибут класса и класса form_attribute вроде этого:

public class FormAttribute{ 
    Form form; 
    Attribute attribute; 
    int attrOrder; 

    // getters/setters 
} 

На отображение формы я отображающая, как это:

<set name="attributes" table="form_attribute" inverse="true" cascade="all-delete-orphan" order-by="attrOrder" > 
    <key column="form" not-null="true"/> 
    <composite-element class="FormAttribute" > 
     <many-to-one name="attribute" column="attribute" class="ExamAttribute" not-null="true" cascade="save-update" /> 
     <property name="attrOrder" column="attr_order" type="integer" not-null="true" /> 
    </composite-element> 
</set> 

, когда я создаю новый формы и ассоциировать атрибуты, которые я ожидаю, когда, я сохраняю, чтобы увидеть заполненную таблицу form_attribute. Но только таблица форм и атрибутов. Это нормально? Должен ли я вручную обновлять отношения form_attribute?

+0

Удаление inverse = "true" и добавление session.flush() после сохранения моего объекта делает его работу, но почему мне нужно заставить флеш? – user1718057

+0

Я использую весну 3.2.5 и Hibernate 4 – user1718057

+0

Флеш не должен иметь к этому никакого отношения. BTW: лучше использовать аннотации вместо xml, это новый способ. –

ответ

1

Итак, наконец, это была глупая проблема. Если я сначала не сохраняю атрибут, и, поскольку для управления связью между формой и атрибутом нет атрибута, составной элемент не был сохранен. Сначала сохраняем новые атрибуты, а затем сохраняем форму, исправленную для моей проблемы.

Смежные вопросы