Hibernate插入问题

时间:2011-07-06 09:16:02

标签: java hibernate jpa-2.0

我有两个实体:PS_PUBLICATION和PS_PUBLICATION_PROPERTIES

PS_PUBLICATION有一个PS_PUBLICATION_PROPERTIES列表

在日志中,插入看起来很好,但最后我得到了一个错误

insert into PS_PUBLICATION (CREATION_DATE, message, FK_SUBJECTAREA_ID, status, subject, UPDATE_DATE, id) values (?, ?, ?, ?, ?, ?, ?) 

binding '2011-07-06 10:36:43' to parameter: 1 

binding 'dc8ca7f0-9d8d-11e0-89b1-00212834363a' to parameter: 3 

binding 'PUBLISHED' to parameter: 4 

binding 'publication 2' to parameter: 5 

binding '2011-07-06 10:36:43' to parameter: 6 

binding '13d6df10-a7ab-11e0-ac48-00212834ce10' to parameter: 7 

insert into PS_PUBLICATION_PROPERTIES (PROP_VALUE, PROP_KEY, FK_PUBLICATION_ID) values (?, ?, ?) 

binding 'close' to parameter: 1 

binding 'CALL-CATEGORY-OPEN' to parameter: 2 

binding '13d6df10-a7ab-11e0-ac48-00212834ce10' to parameter: 3 

06 Jul 2011 10:36:43,680  WARN org.hibernate.util.JDBCExceptionReporter:100 - SQL Error: 2291, SQLState: 23000
06 Jul 2011 10:36:43,681 ERROR org.hibernate.util.JDBCExceptionReporter:101 - ORA-02291: integrity constraint (EPF7_NOTIF.SYS_C0018903) violated - parent key not found

WARN org.hibernate.util.JDBCExceptionReporter:100
    - SQL Error: 2291, SQLState: 23000 06 Jul 2011 10:36:43,690 ERROR org.hibernate.event.def.AbstractFlushingEventListener:324
    - Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update   
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)

在插页中,everythign看起来很好!

知道可能导致这种情况的原因吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

org.hibernate.exception.ConstraintViolationException

  

JDBCException的实现,指示请求的DML操作导致违反已定义的完整性约束。

仔细检查要插入的数据是否违反数据库约束。看起来数据库对值不满意。

(如果您发现该异常,请致电ex.getConstraintName(),这应该提供更多详细信息。)

没有注意到,约束名称在问题中;)您将在数据库中找到该约束的定义。询问你的oracle实例,它会告诉你哪个表以及哪个插件会导致麻烦。


  

错误:       ORA-02291:违反了完整性约束 - 未找到父密钥

     

<强>原因:       您尝试使用唯一键或主键引用表,但列出的列与主键不匹配,或者此表不存在主键。

您提供两个UUID作为外键 - 其中一个不是其他表中的主键。或者至少 - 没有被oracle认可为主键。

This link may help