我使用的是 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/