java-如何在jpa中从元素集合中批量删除
作者:互联网
我正在使用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,所以我不知道如何解决这种可变性甚至无法处理它.我想从所有实体中删除具有给定值的该集合中的所有条目(在我的情况下为文件集).是否可以使用jpql或(甚至更好)criteria-api?
解决方法:
您可以使用like查询,只是语法稍有变化.
query = em.createQuery("SELECT i FROM Item i WHERE UPPER(i.name) LIKE :keyword ");
query.setParameter("keyword", "%" + keyword.toUpperCase() + "%");
您可以通过以下链接了解更多信息,
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();
请通过以下链接阅读更多内容:
http://ctpconsulting.github.com/query/1.0.0.Alpha3/criteria.html
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html
标签:criteria-api,jpa,jpa-2-0,java,mysql 来源: https://codeday.me/bug/20191201/2080238.html