我正在尝试在 datanucleus 中使用 JDOQL 批量更新,但出现以下异常,
2013 年 12 月 8 日 13:06:56 信息 DataNucleus.Persistence:属性 datanucleus.cache.level2 未知 - 将被忽略 13 年 12 月 8 日 13:06:56 信息 DataNucleus.Persistence:========= ======== 持久性配置 =============== 12/08/13 13:06:56 信息 DataNucleus.Persistence:DataNucleus 持久性工厂 - 供应商:“DataNucleus”版本:“2.2.5”12/08/13 13:06:56 INFO DataNucleus.Persistence:DataNucleus Persistence Factory 已为数据存储 URL="jdbc:derby:;databaseName=metastore_db;create=true" driver="org.apache 初始化。 derby.jdbc.EmbeddedDriver" userName="APP" 12/08/13 13:06:56 INFO DataNucleus.Persistence: ======================= ==================================== 12/08/13 13:06:57 INFO Datastore.Schema:使用“无”初始化目录“”,架构“APP”自动启动选项 12/08/13 13:06:57 INFO Datastore.Schema:目录“”,模式“APP”已初始化 - 管理 0 个类 12/08/13 13:06:57 INFO DataNucleus.MetaData:注册监听器元数据初始化
要执行的查询: UPDATE myDomain.MTable t SET t.tableName = 'tmp3' WHERE t.tableName == 'tmp' 12/08/13 13:06:57 INFO DataNucleus.JDO: 抛出异常 JPQL UPDATE 查询没有更新条款!查询应该类似于“UPDATE Entity e SET e.param = new_value WHERE [where-clause]” org.datanucleus.exceptions.NucleusUserException:JPQL UPDATE 查询没有更新子句!查询应该类似于 org.datanucleus.query.JDOQLSingleStringParser$Compiler 中 org.datanucleus.query.JDOQLSingleStringParser$Compiler.compileUpdate(JDOQLSingleStringParser.java:236) 中的“UPDATE Entity e SET e.param = new_value WHERE [where-clause]” .compileSelect(JDOQLSingleStringParser.java:160) 在 org.datanucleus.query.JDOQLSingleStringParser$Compiler.compile(JDOQLSingleStringParser.java:125) 在 org.datanucleus.query。
我正在使用 DN-core-2.2.4、DN-RDBMS-2.2.4、DN-Enhancer-2.1.3 和 DN-ConnectionPool-2.0.3。
我触发更新的代码片段如下,
openTransaction();
Query q = pm.newQuery("javax.jdo.query.JDOQL", query);
q.compile();
Collection<?> result = (Collection<?>) q.execute();
committed = commitTransaction();
关于我做错了什么的任何指示。
我的查询格式为“UPDATE myDomain.A t SET t.tableName = 'tmp3' WHERE t.tableName == 'tmp'”