我认为更新语句要求数据已经存在。
我正在支持一个 java 应用程序。以前的一些代码开发人员使用删除语句清除记录,然后使用更新语句将数据插入表中。
update语句可以用来向表中插入或更新数据吗???
数据库是 oracle express。这不应该有所作为。
您可以尝试使用MERGE
语句来获得相同的结果。使用MERGE
语句,您可以将新记录插入表中,或者如果数据已经存在则更新。
请查找MERGE
语句的语法。
MERGE INTO <table_name>
USING <table_view_or_query>
ON (<condition>)
WHEN MATCHED THEN <update_clause>
DELETE <where_clause>
WHEN NOT MATCHED THEN <insert_clause>;
也许您可以提供有关您的问题的更多详细信息。我假设这是你所需要的。
Query 是 org.hibernate.Query 的一个实例。查看休眠文档进行查询。更新应该引发异常,但事实并非如此。代码没有刷新缓冲区的事实可能是更新没有引发异常的原因吗???
String deleteQueryString = String.format("delete FROM %s WHERE personId = %s and deptId = %s and active = true", table, person.getId(),dept.getId());
Query deleteQuery = Persistence.reportContext().session().createQuery(deleteQueryString);
int deletedCount = deleteQuery.executeUpdate();
log.debug(String.format("%20s (%4s): %s", "delete query", deletedCount, deleteQueryString));
String updateQueryString = String.format("update %s set activeSet = true WHERE personId = %s and deptId = %s and activeSet = false", table, person.getId(), dept.getId());
Query updateQuery = Persistence.reportContext().session().createQuery(updateQueryString);
int updatedCount = updateQuery.executeUpdate();