简体   繁体   English

休眠条件是否包含涵盖条件列表的任何条件

[英]Is there any criterion for hibernate criteria to cover contains condition of list

My question is that, I have a class like: 我的问题是,我有一个类似的课程:

@Entity
public class Product{
@Id
String id;
String name;
@ManyToMany
List<Tag> tags;
}

@Entity
public class Tag{
@Id
String id;
String name;
}

I want to search products with criteria like in but reversive as: 我想搜索具有以下条件但具有可逆性的产品:

session.createCriteria(Product.class).add(
    Restrictions.and(
        Restrictions.like("name",name+"%"),
        Restrictions.contains("tags",tag)).list();

But obviously Restrictions.contains does not exist. 但是显然Restrictions.contains不存在。 I only can find solutions with HQL queries but I don't want to (actually can't) write HQL queries. 我只能通过HQL查询找到解决方案,但我(实际上不能)编写HQL查询。

Is there any way to handle this with criteria? 有什么办法可以用标准来解决这个问题?

I would just join the association using createAlias et do a simple compare: 我只是使用createAlias加入该协会,并做一个简单的比较:

session.createCriteria(Product.class)
    .createAlias("tags", "tag")
    .add( Restrictions.eq("tag", tag))
    .list()

Are you are in search of Restrictions.in(String propertyName, Collection values) ? 您是否在搜索Restrictions.in(String propertyName,Collection values) In the chapter 15.2. 在第15.2章中 Narrowing the result set you will find an example: 缩小结果集,您会发现一个示例:

List cats = sess.createCriteria(Cat.class)
    .add(Restrictions.not(Restrictions.in("name", new String[] { "Fritz", "Izi", "Pk" })))
    .add(Restrictions.disjunction())
    .list();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM