Я просматриваю документацию спящего режима и сталкиваюсь с понятием обратного атрибута. Я новичок в Hibernate, поэтому мне трудно понять концепцию должным образом.
<class name="Category">
<id name="id" column="CATEGORY_ID"/>
...
<bag name="items" table="CATEGORY_ITEM">
<key column="CATEGORY_ID"/>
<many-to-many class="Item" column="ITEM_ID"/>
</bag>
</class>
<class name="Item">
<id name="id" column="ITEM_ID"/>
...
<!-- inverse end -->
<bag name="categories" table="CATEGORY_ITEM" inverse="true">
<key column="ITEM_ID"/>
<many-to-many class="Category" column="CATEGORY_ID"/>
</bag>
</class>
Из вышеприведенного кода inverse="true"
применяется к категориям, поэтому я понял, что категории - это обратный конец.
Но я вижу некоторое противоречие с моим пониманием:
Изменения, сделанные только для обратного конца ассоциации, не сохранялось.
category.getItems().add(item); // The category now "knows" about the relationship
item.getCategories().add(category); // The item now "knows" about the relationship
session.persist(item); // The relationship won't be saved!
session.persist(category); // The relationship will be saved
Если категории находятся на обратном конце, то как здесь сохраняется связь?
Не обратная сторона используется для сохранения представления в памяти в базы данных.
Посмотрев пример и прочитав инструкцию выше, я узнал, что категории находятся на обратном конце.
Пожалуйста, помогите мне узнать, как интерпретировать этот атрибут inverse="true"
. После поиска в сети и поиска ответов в SO, я узнал полезность этого атрибута, но все же у меня есть эта путаница.