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

Noa*_*oam 5 java mysql jpa criteria-api jpa-2.0

我正在使用 jpa 2.0 并且我有以下实体:

@Entity
public class Folder{

    @ElementCollection
    @CollectionTable(name="folder_files")
    private Set<String> files;      
    // .....
 }
Run Code Online (Sandbox Code Playgroud)

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

Delete from folder_files where files = XXX
Run Code Online (Sandbox Code Playgroud)

有没有办法使用标准 API 执行此查询?如果没有,有没有办法使用 jpql 执行此查询?

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

Sha*_*que 1

您可以使用类似的查询,只是语法稍有改变。

query = em.createQuery("SELECT i FROM Item i WHERE UPPER(i.name) LIKE :keyword ");
query.setParameter("keyword", "%" + keyword.toUpperCase() + "%");
Run Code Online (Sandbox Code Playgroud)

您可以在以下链接中阅读更多内容,

https://forums.oracle.com/forums/thread.jspa?threadID=423742

更新:

@Noam你可以做到:就像 Criteria API 中一样

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .add( Restrictions.between("weight", minWeight, maxWeight) )
    .list();
Run Code Online (Sandbox Code Playgroud)

请通过以下链接阅读更多相关内容:

http://ctpconsulting.github.com/query/1.0.0.Alpha3/criteria.html

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html