- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在某些应用程序中进行手动订购。更新字段的 JPAQL 是这样的:
update SortableBean s set s.position = s.position + 1 where s.position >= :initialPosition and s.position < :finalPosition
executeUpdate
的返回(据我所知是更改的行数)是正确的,但是 @Version
或 position
字段已更改。
我构建了一个示例项目并使用 Hibernate 和 EclipseLink 对其进行了测试,两者均使用 JPA2,而原始项目使用的是较旧的 Hibernate 版本。我有相同的异常所有相同的结果所有我能想象的测试用例。
我的示例项目点:
如果您获取代码并使用 mvn clean install -Dtest=SortableTests
运行测试,您将看到如下输出:
Sortable ID - POS - VERSION
------------------
BEFORE
Sortable 1 - 0 - 1
Sortable 2 - 1 - 1
Sortable 3 - 2 - 1
Sortable 4 - 3 - 1
Sortable 5 - 4 - 1
INITIAL=0 FINAL=3
UPDATED 3 ITEMS
AFTER
Sortable 4 - 0 - 2
Sortable 1 - 0 - 1
Sortable 2 - 1 - 1
Sortable 3 - 2 - 1
Sortable 5 - 4 - 1
换句话说,看起来它没有更新求和值,所以,我得到了重复的位置。
有什么想法吗?
生成的SQL似乎是正确的想法:
UPDATE sortables SET version = (version + 1), pos = (pos + 1) WHERE ((pos >= 0) AND (pos < 3))
最佳答案
感谢@Chris和他的 comment ,这让我对真正的问题敞开心扉。
问题是我正在进行批量更新,但没有清除持久性上下文。
基本上,修复是 this commit .
我也有一个错误的断言,但那是我的问题中最少的。
谢谢大家!
关于hibernate - 带有算术运算的 executeUpdate 不会更改列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501528/
这个问题已经困扰两天了。尝试了我能想到的一切。非常感谢您在这个问题上给我的任何帮助。提前致谢。` try { // try get tx records Class.forName("com
我有如下代码: using (var session = this.sessionCreator.OpenSession()) using (var transaction = session.Beg
我有以下代码: sql = update [myTable] set content = '" map.getString() + "' where id = " map.getKey(); stmt
我创建了这样的声明: String query = "INSERT INTO ZMONES (ID, PAVADINIMAS, SLAPTAZODIS) VALUES(" +sum+" ,"+
请我想向数据库添加一个元素,但我仍然遇到此错误,我不知道错误到底在哪里,并且我确定 sql 查询和我的数据库 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxEr
我想知道,如何关闭 JAVA(JDBC) 中的executeUpdate 语句? 例如: String sql = "UPDATE. .. . .. Whatever..."; ResultSet
PreparedStatement updatestmt1 = con.prepareStatement("update BASE_TX set tx_vl=replace(tx_vl,?,?)");
使用 readline 5.1 运行 mysql Ver 15.1 Distrib 5.5.44-MariaDB,适用于 Linux (x86_64) 我编写了一个 Java servlet,它在 S
今天我遇到了这样的情况:程序启动,正常运行,显示数据已正确输入数据库,但没有执行。我再次运行脚本,它运行良好,但有趣的是它没有抛出异常,尽管它未能插入数据。 是否存在 Statement.execut
你好,祝大家新年快乐。 我正在开发一个 JDBC 程序,它获取服务器中的每个数据库,访问每个表并收集有关这些列的信息。最后,我想将表中的每一行信息添加为行。我的程序可以正确编译和运行,但表总是返回 E
我得到一个异常(exception) com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be t
我正在尝试在某些应用程序中进行手动订购。更新字段的 JPAQL 是这样的: update SortableBean s set s.position = s.position + 1 where s.
这是我的代码: String insertQuery = "INSERT INTO Links(PageId, LinkId) values(?, ?)"; PreparedStatement pre
我一直在尝试执行以下查询: SQL_ADDPROJECT = "INSERT INTO project (name, description, duration, departement, chef)
我的目标是向我创建的现有表中添加一个新行。但是,我收到以下错误。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have
如果我有一个使用以下架构创建的表: CREATE TABLE names (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR); 还有一个 List na
我正在 JBehave 非 Maven 框架中工作,并且正在运行一个文本文件内的插入语句,我将其作为 qry 传递给我的方法。插入语句为: Insert into croutreach.ACME_OU
我正在修改一个 Java Web 应用程序,该应用程序是以前(由其他人)编写的,它使用 JDBC。该数据库是使用 PHPMyAdmin 创建的。在此过程中,我需要重命名其中一张表。我在代码中用正确的名
所以我试图将信息从java应用程序存储到数据库中,但我收到此错误:“”AWT-EventQueue-0“java.lang.NullPointerException”并且我一生都找不到原因。我尝试更改
我使用以下代码通过 postgres 的更新查询更改密码。 @POST @Path("/changepassword") @Consumes(MediaType.APPLICATION_JSON) p
我是一名优秀的程序员,十分优秀!