gpt4 book ai didi

jpa - 有没有办法根据列表更新数据库字段?

转载 作者:行者123 更新时间:2023-12-02 00:32:18 25 4
gpt4 key购买 nike

使用 JPA,我有一个来 self 的数据库的条目列表:

User(id, firstname, lastname, email)

我通过做得到:

List<User> users = User.find("lastname = ?", "smith");

我想在一个请求中更新所有内容,方法如下:

"UPDATE USER SET email = null IN :list"

然后将参数“list”设置为users

这可能吗?如果是,怎么办?

感谢您的帮助:)

最佳答案

那么,您可以将用于获取列表的查询嵌入到更新的 where 子句中。

UPDATE User a SET a.email = null 
WHERE user IN (SELECT b FROM User b WHERE lastName = :?)

通过这样做,您将执行查询以搜索列表并在单个更新查询中进行更新。

你觉得怎么样?你认为这可行吗?

-编辑-

由于您想使用原始的项目列表而不是刚从数据库中检索到的列表,您仍然可以确保像这样构建原始列表

UPDATE User a SET a.email = null 
WHERE user IN (SELECT b FROM User b WHERE lastName IN(:originalList))

然后当你调用它时,你可以做这样的事情:

Collection<String> originalList = Arrays.asList("Kenobi", "Skywalker", "Windu");
query.setParameter("originalList", originalList);

这样,您仍然可以确保查询只包含原始列表中的项目,而不包含数据库中任何可能的新项目,前提是姓氏是数据库中的候选键,否则我建议您使用子查询的 ID 代表姓氏。

关于jpa - 有没有办法根据列表更新数据库字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6265444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com