Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate:ConstraintViolationException:Could not execute JDBC batch update / 6 сообщений из 6, страница 1 из 1
29.06.2009, 16:07
    #36064641
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate:ConstraintViolationException:Could not execute JDBC batch update
Имеются две сущности, связанные как OneToMany.
Street.java
Код: plaintext
1.
2.
3.
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "street")
 public  Set<StreetHouse> getStreetHouses() {
	 return   this .streetHouses;
}

StreetHouse.java
Код: plaintext
1.
2.
3.
4.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "STREET_ID", nullable = false)
 public  Street getStreet() {
	 return   this .street;
}

При переборе некоторого словаря Houses дома соответствующие условию добавляются в Set streetHouses,
после чего street сохраняется.
Код: plaintext
1.
2.
3.
4.
5.
6.
 while  (housesIterator.hasNext()) { 
	....
	StreetHouse streetHouse =  new  StreetHouse();
	streetHouse.setHouse(house);
	street.getStreetHouses().add(streetHouse);
}
streetManager.save(street);

При сохранении выбрасывается ConstraintViolationException: Could not execute JDBC batch update.
Причина - невозможность выполнить insert в таблицу StreetHouses из-за нарушения PRIMARY_KEY в
таблице STREET_HOUSE: ORA-00001: нарушено ограничение уникальности(SCHEMA_NAME.PK_STREET_HOUSE)
То есть как бы я пытаюсь вставить в таблицу существующий айдишник... Хотя при добавлении в Set
айдишники у объектов StreetHouse отсутствуют, они генерируются сиквенсом:
Код: plaintext
1.
2.
3.
4.
5.
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ")
@Column(name = "STH_ID", unique = true, nullable = false, precision =  22 , scale =  0 )
 public   Long  getSthId() {
	 return   this .sthId;
}

Вот, собственно, вопрос... почему так происходит?
...
Рейтинг: 0 / 0
30.06.2009, 07:09
    #36065239
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate:ConstraintViolationException:Could not execute JDBC batch update
XEugeneВот, собственно, вопрос... почему так происходит? скорее всего из-за
Код: plaintext
streetManager.save(street);
Что это за метод? Это hibertate и вызов session.save()? Исползуй session.saveOrUpdate()
...
Рейтинг: 0 / 0
30.06.2009, 12:06
    #36065717
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate:ConstraintViolationException:Could not execute JDBC batch update
Спасибо, заменил на saveOrUpdate и действительно все заработало.

Используется Spring, save это getHibernateTemplate().merge(object), то есть в конечном счете session.merge(object).
...
Рейтинг: 0 / 0
30.06.2009, 14:54
    #36066152
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate:ConstraintViolationException:Could not execute JDBC batch update
Рано обрадовался. Эта ошибка появлялась периодически, не при каждом сохранении.
Сейчас опять тот же ConstraintViolationException.
И в самом деле, merge и saveOrUpdate разве в данном случае не равносильны?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
28.12.2016, 16:26
    #39377040
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate:ConstraintViolationException:Could not execute JDBC batch update
XEugene,

Если mysql 5.1 то вставка конкурирует за индекс и лочится на нем .

?!
...
Рейтинг: 0 / 0
29.12.2016, 09:44
    #39377411
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate:ConstraintViolationException:Could not execute JDBC batch update
Все эти 7 лет XEugene не пил, не ел, не спал.
Все ждал, кто же ему ответит. :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate:ConstraintViolationException:Could not execute JDBC batch update / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]