org.hibernate.HibernateException: найдено более одной строки с данным идентификатором: 578, для класса: com.hibernate.query.performance.persistence .model.Storeorg.hibernate.HibernateException: найдено более одной строки с данным идентификатором
база данных не имеет повторяющихся строк магазин с идентификатором 578. Это было проверено с помощью SQL:
SELECT *
FROM store
WHERE store.store_id = 578;
Он вернулся 0 записей.
Другие вопросы, касающиеся One, Two, указывают, что проблема может быть связана с отображением OneToOne. Субъекты магазина и персонал имеют OneToOne отношений и мои отображаются так:
Персонал:
@OneToOne(mappedBy = "manager_staff", cascade = CascadeType.ALL, orphanRemoval = true)
public Store getStore() {
return store;
}
Магазин:
@OneToOne
@JoinColumn(name = "manager_staff_id", referencedColumnName = "staff_id", nullable = false)
public Staff getManager_staff() {
return manager_staff;
}
Как это исправить?
Обновление:
Исключение немного изменилась, когда запрос был изменен следующим образом:
Query query = session.createQuery("select c " +
" from Rental r, Customer c join fetch c.address address join fetch address.store store join fetch address.city city " +
" where r.customer = c " +
" and r.returnDate is null");
Исключение:
org.hibernate.HibernateException: More than one row with the given identifier was found: 2951, for class: com.hibernate.query.performance.persistence.model.Store
Там не было никаких изменений в базу данных. Я не уверен, что HQL корректен, поскольку JProfiler не может поймать записи JPA/Hibernate. Единственными метриками, которые были обнаружены, являются JDBC-соединения, которые выполнялись.