java - 如何从jpa中的元素集合中批量删除

标签 java mysql jpa jpa-2.0 criteria-api

我使用的是 jpa 2.0,我有以下实体:

@Entity
public class Folder{

    @ElementCollection
    @CollectionTable(name="folder_files")
    private Set<String> files;      
    // .....
 }

给定一个文件名,我想删除文件 == theGivenFileName 的所有条目。在 sql 中它会是这样的:

Delete from folder_files where files = XXX

有没有办法使用 criteria-api 执行此查询? 如果没有,有没有办法使用 jpql 执行此查询?

更新: 我认为我的问题不够清楚: 由于 jpql 使用实体(而不是表),我不能只执行上面写的 sql 加上因为我正在使用 @ElementCollection 我不知道如何解决这个 variablr 甚至处理它。我想从所有实体中删除该集合(在我的例子中是文件集)中所有具有给定值的条目。是否可以使用 jpql 或(甚至更好的)criteria-api?

最佳答案

Delete FROM 子句需要一个实体,因此据我所知无法从元素集合中删除。

您可以使用 native SQL 查询,也可以将元素集合作为 OneToMany 映射到实体。

关于java - 如何从jpa中的元素集合中批量删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481654/

相关文章:

java - 如果玩!自动为每个请求启动一个事务并管理它,为什么在方法上放置@Transactional?

java - 在 Java 中使用 Externalizable 接口(interface)反序列化

java - Mysql表中的URL可以是超链接吗?

php - 使用 PHP 查询更改表,列名不显示在 phpMyAdmin 中

java - 下面的代码将如何在 JPA 内部执行?

java - 外键仅适用于 Spring JPA 项目中的某些模型

java - 运行可执行的 .jar 文件并在 Windows 登录之前确认运行以隐藏对 Windows 桌面的访问

java - 在 maven 中构建包时出错

java - 从后面搜索时如何从字符串的一部分中获取子字符串

PHP - 尽管采用 UTF-8 编码,但字符串未正确显示