【发布时间】:2011-05-21 10:29:21
【问题描述】:
我有一些记录要导入。第一次插入时没问题。如果我尝试再次导入相同的数据,我会收到一个 org.postgresql.util.PSQLException: ERROR: duplicate key value 违反唯一约束。如果数据相同/或已更改,如何更新数据库中的记录,如果是使用 JDBC 的新数据,如何插入?
public void store(Object entity) throws Exception {
try {
if (this.updateEntity((XEntity) entity) == 0) {
this.insertEntity((XEntity) entity);
}
...
} catch (SQLException sqlEx) {
...
}
}
private int updateEntity(XEntity entity) throws SQLException {
PreparedStatement prepStmt = this.getUpdatePreparedStmt();
...
return prepStmt.executeUpdate();
}
private void insertEntity(XEntity entity) throws SQLException {
...
this.getInsertPreparedStmt().executeUpdate();
}
问题现已解决。我在下面提供了答案。
【问题讨论】:
-
您似乎处于实施的早期阶段。您是否考虑过使用 JPA 或 Hibernate 来处理持久性?是否有任何需要低级 JDBC 访问的特殊要求?
-
你应该弄清楚为什么“this.updateEntity((XEntity) entity) == 0”。
-
XEntity 是我导入的数据。我正在修改一个使用 JDBC 完成的项目,所以我无法使用 Hibernate。
-
数据将被导入,并为每条记录决定插入或更新到我的表中
-
代码看起来可以工作。所以问题可能在于您的表格约束和/或插入的数据。
标签: java jdbc insert insert-update