Я пользуюсь списком. Список состоит из составного первичного ключа, который также используется для сортировки списка.
Проблема в том, что если я удаляю элемент в списке (соединение ключей),
аннотация @OrderColumn
генерирует запрос на обновление первичного ключа, а стоимость возрастает исключение типа:
[26-05-2011 10:34:18:835] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1062, SQLState: 23000
[26-05-2011 10:34:18:835] ERROR org.hibernate.util.JDBCExceptionReporter -Duplicate entry '10-10' for key 'PRIMARY'
[26-05-2011 10:34:18:835] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
Вот определение отображения:
@ManyToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "chapter_item", joinColumns = { @JoinColumn(name = "chapter_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "item_id", nullable = false, updatable = false) })
@OrderColumn(name="iorder")
public List<Item> getItems() {
return items;
}
Вот запрос на обновление, где у меня проблема:
Hibernate:
update
chapter_item
set
item_id=?
where
chapter_id=?
and iorder=?
Интересно, это известная ошибка и есть ли у кого-нибудь решение?