使用Hibernate,我想根据条件更新数据库中的数据,但是出现以下错误:“遍历的节点不能为空”
这是我的数据库描述:
Account: id, email, password
Member : id, account, team
Team: id, current (and a reference to member => members)
这是我的JPA:
UPDATE Team t SET t.current = :current LEFT JOIN t.members m WHERE t.current = :current_true AND m.account = :account
我究竟做错了什么?如果我将LEFT JOIN移到SET之前:
UPDATE Team t LEFT JOIN t.members m SET t.current = :current WHERE t.current = :current_true AND m.account = :account
我得到:“正在期待SET,找到了LEFT”
如果我删除联接:
UPDATE Team t SET t.current = :current WHERE t.current = :current_true AND t.members.account = :account
我得到:“非法尝试取消对集合的引用”。
更新值的正确方法是什么?
谢谢你的帮助!
第4章中的JPA 2.0规范包含JPQL中所有受支持功能的详细信息。这是“更新”语句的定义:
这些操作的语法如下:
update_statement ::= update_clause [where_clause]
update_clause ::= UPDATE entity_name [[AS] identification_variable]
SET update_item {, update_item}*
update_item ::= [identification_variable.]{state_field | single_valued_object_field} =
new_value
new_value ::=
scalar_expression |
simple_entity_expression |
NULL
如您所见,此处未说明对多个实体的支持。我猜您将不得不找到一种不同的方式来执行此操作,也许创建一个方法来选择要首先更新的实体,然后遍历设置值的结果。或者,您可以使用本机SQL更新。
我有两个表,喜欢用另一个表的值更新其中一个表。 我已经尝试过这些查询,但SQLite不支持使用UPDATE进行连接。任何人都可以提出查询。谢谢您的帮助。
我以前从未使用过JPQL,我需要用它来批量更新特定列中的值。该列存在于表中,但实体类是在没有变量的情况下设置的。我不能使用确切的数据,但设置会像这样给你一个想法: 数据库列 JPA 实体类 在 Books 实体类中,有一个 getter 和 这两个问题都是b.作者提出的。authorId和b.author是无效的标识符。是否可以编写两个单独的查询?1个查询作为select语句,我可以使用连接,然后
我正在尝试使用内部联接更新表。我试图做的是获取具有“code”值的“username”,并在另一个表上更新该“username”的值。 我试过这个: 这给了我“致命错误:调用非对象上的成员函数bind_param()” 我搜索并找到了一些像我这样的问题,但我不能解决这个问题。我使用了,它给出了布尔值false,但是我看不出问题在哪里。
我正在尝试更新表,下面是我正在使用的查询 我还尝试了另一个查询: 测试了运行良好的select查询,不确定问题是什么,在IBMDB2中是否有所不同。
问题内容: 我有两个表,并且想为LEFT JOIN中的所有行更新T1中的字段。 举一个简单的例子,更新以下结果集的所有行: 在MySQL手册指出: 多表UPDATE语句可以使用SELECT语句中允许的任何类型的联接,例如LEFT JOIN。 但是我在记录的多表UPDATE中找不到执行此操作的正确语法。 正确的语法是什么? 问题答案: 请注意,使用/ 语法会更有效: 有关性能的详细信息,请参见我的博
当我使用Flink SQL执行以下语句时,错误报告如下: 请求 根据< code>user_id字段对user_behavior_kafka_table中的数据进行分组,然后取出每组中< code>ts字段值最大的数据 Excute sql Flink 版本 1.11.2 错误消息 作业部署 在纱线上 表消息 < li >来自消费者kafka主题的user_behavior_kafka_table