【发布时间】:2018-10-10 22:57:20
【问题描述】:
我以前从未使用过 JPQL,我需要使用它来批量更新特定列中的值。该列存在于表中,但实体类的设置没有变量。我不能使用确切的数据,但设置会像这样给你一个想法:
数据库列
Books:
book_id book_title author_id
Authors:
author_id first_name last_name
JPA 实体类
Books:
private Integer bookId;
private String bookTitle;
private EAuthor author;
Authors:
private Integer authorId;
private String firstName;
private String lastName;
在 Books 实体类中,author_id 有一个 getter 和 setter,但它从 author 实体调用它。我现在的困境是我需要使用相同的 author_id 批量更新所有 book_titles,但我不确定如何编写 JPQL 查询语句来执行此操作。我试过了:
String queryUpdate = "UPDATE books b SET b.book_title = :bookTitle"
+ " WHERE b.author = :authorId";
和
String queryUpdate = "UPDATE books b SET b.book_title = :bookTitle"
+ " WHERE b.author.authorId = :authorId";
两个查询都表示 b.author.authorId 和 b.author 都是无效标识符。是否可以编写 2 个单独的查询? 1个查询作为选择语句,我可以使用连接然后第二个来更新第一个查询的结果集?
【问题讨论】: