org.hibernate.exception.ConstraintViolationException: не удалось выполнить пакетное обновление JDBC - PullRequest
4 голосов
/ 28 апреля 2011

В моем модуле, над которым я работаю, я получил эту ошибку, которая вызвана org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update и java.sql.BatchUpdateException (полная трассировка стека находится здесь: нажмите здесь ).

Из того, что я прочитал из других постов, это, безусловно, вызвано нарушением первичного ключа. Однако я даже не смог воспроизвести проблему, чтобы хотя бы отследить реальную ошибку и решить ее. Каждый раз, когда я вставляю идентичную запись с той, которая уже есть в базе данных, она будет просто сливаться друг с другом и без ошибок. Тем не менее, я получал много этой ошибки при развертывании, поэтому я не совсем уверен, что происходит на сервере развертывания (я всего лишь студент-разработчик, так что я все еще в этом не уверен). 1007 *

Я был бы признателен, даже если бы кто-нибудь указал мне направление. Благодарю. (Сообщите мне, если нужно что-то добавить)

Вот фрагмент карты гибернации для модуля (надеюсь, это поможет):

<hibernate-mapping package="edu.umd.cattlab.schema.cattXML.extensions.VaTraffic"
default-lazy="false" default-cascade="all, delete-orphan" schema="vatraffic">

<typedef class="edu.umd.cattlab.schema.hibernate.util.XMLGregorianCalendarType" name="XMLCal"/>

<class name="VaTrafficAssociatedEvent" table="associated_event">
    <id name="associatedEventId" column="associated_event_id">
        <generator class="sequence">
            <param name="sequence">ritis.associated_event_id_seq</param>
        </generator>
    </id>

    <property name="secondaryEventId" column="secondary_event_id" not-null="true" />
    <property name="unassociatedTimestamp" type="XMLCal" column="unassociated" />
    <property name="autoRelated" column="auto_related" not-null="true" />
    <many-to-one name="relationshipType" column="relationship_type" not-null="true" cascade="none" />
 </class>

Это часть кода Java, которая использует приведенное выше отображение: нажмите здесь

Ответы [ 2 ]

3 голосов
/ 28 апреля 2011

Вы можете иметь больше ограничений, чем просто ограничение первичного ключа. Может быть, у вас есть ограничение внешнего ключа, которое вы нарушаете? Или, может быть, уникальное ограничение для нескольких столбцов. Не могли бы вы включить DDL для таблицы, которую вы обновляете?

2 голосов
/ 29 апреля 2011

При просмотре журналов это нарушение ограничения pk.В частности, ОШИБКА: дубликат ключа нарушает уникальное ограничение «related_event_pk»

Попытка определить, почему это происходит, может быть глубоким погружением, но для начала, как вы генерируете значения для этого поля?В вашем ddl оно отображается как поле «nextval», но ваш журнал показывает, что существует явное значение.Откуда эта ценность?Почему вы не позволяете postgre устанавливать само значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...