Вы не можете обновить индекс списка напрямую, потому что он получен путем изучения того, где находится объект в дочернем списке родителя. Если объект был в списке с индексом 10, а для свойства list-index
было установлено значение 5, что должен использовать Hibernate?
Поэтому обычно вы указываете Hibernate, какой столбец использовать для хранения индекса списка, и после этого забываете об этом.
Но если вы хотите отобразить свойство list-index
на свой объект, чтобы иметь прямой доступ к нему (только для чтения, например, getIndexInList()
), вы должны сопоставить его с insert=false update=false
.
Я немного разбираюсь в отображении XML, но здесь есть кое-что, что, по моему мнению, сработает. Дайте мне знать, если у вас есть проблемы и какое сообщение об ошибке вы получите.
<hibernate-mapping>
<class name="com.example.Node" table="node">
<id name="id" column="nodeId">
<generator class="native"/>
</id>
<property
name="listIndex"
column="listIndex"
insert="false"
update="false" />
<many-to-one
name="parent"
column="parentNodeId"
class="com.example.Node"/>
<list name="children" inverse="true" cascade="all">
<key column="parentNodeId"/>
<list-index column="listIndex"/>
<one-to-many class="com.example.Node"/>
</list>
</class>
</hibernate-mapping>