作者:ttarm_33218389 | 来源:互联网 | 2023-10-13 10:43
数据插入时Causedby:java.sql.BatchUpdateException:ORA-00001:违反唯一约束条件(SCOTT.T_YHB_PK)ato
数据插入时
Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (SCOTT.T_YHB_PK)
at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:566)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9365)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:210)
at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 74 more
Could not execute JDBC batch update
网上资源说是因为Oracle数据库里面的表字段名称用了数据库的关键字或者保留字,会出现这种错误,一般关键字也可以使用,但是要“”双引号包裹。但是表操作会有很多困难,所以不推荐使用关键字作字段名称,有好的建表习惯,像T_Name之类的字段名就很好。现在我知道为什么再用PowerDesigner 建立Oracle数据库表格的时候发现表的字段有很多“”包裹的字段,害我一个一个删除,还怪PowerDesigner。现在想想自己真是无知的让人害怕啊
还有之前出现的错误,是Hibernate反向工程的时候一个数据表竟然出现了两个JAVA文件,后来发现是表里面没有主键,所以反向工程自动添加了一个类文件。。。作用是什么呢,我不知道。。。。
说起这个主键,之前自己无知,喜欢在SQLSERVICE 和MYSQL的数据表里面添加ID字段,设置为主键而且自增,但是Oracle里面没有这么简单地东西,要新建Sequence和Trigger。每个表要创建一个序列和触发器的话,数据库的开支就非常大,所以Oracle不喜欢这样,因为已经有很多的技术替代这个方法了,关键是 我都不会 。。。