org.hibernate.exception.ConstraintViolationException:无法执行JDBC批量更新

时间:2011-04-28 18:41:07

标签: java hibernate jdbc

在我正在处理的模块中,我收到了此错误,据说是由org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update引起的 和java.sql.BatchUpdateException(完整的堆栈跟踪在这里:click here)。

从我从其他帖子中读到的内容,这肯定是由违反主键引起的。但是我甚至无法复制问题,因此我至少可以追踪真正的错误并解决问题。每次我插入一个相同的条目与已经在数据库中的条目,它将只是相互合并,没有错误。但是,我在部署中遇到了很多这样的错误,所以我不太确定部署服务器中发生了什么(我只是一个学生开发人员,所以我仍然有点'noob'。) / p>

即使有人能指出我的方向,我也会很感激。谢谢。 (如果需要添加某些内容,请通知我)

以下是该模块的hibernate映射片段(希望这会有所帮助):

<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代码的一部分:click here

2 个答案:

答案 0 :(得分:3)

您可以拥有比主键约束更多的约束。难道你有违反的外键约束吗?或者可能是多列唯一约束。您能否为要更新的表格包含DDL?

答案 1 :(得分:2)

在查看日志时,它违反了pk约束。特别是错误:重复键违反了唯一约束“associated_event_pk”

试图确定为什么会发生这种情况可能是一个深刻的过程,但对于初学者,你如何为这个领域创造价值?在您的ddl中,它显示为“nextval”字段,但您的日志似乎表明存在显式值。这个价值来自哪里?你为什么不让postgre设置值呢?