是否有任何hibernate标准的标准来涵盖列表的条件

时间:2014-03-27 12:14:32

标签: java hibernate jpa

我的问题是,我有一个类:

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

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

我想搜索符合以下标准的产品,但是反转为:

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

但很明显Restrictions.contains不存在。我只能找到HQL查询的解决方案,但我不想(实际上不能)编写HQL查询。

有没有办法用标准处理这个?

2 个答案:

答案 0 :(得分:1)

我只是使用createAlias加入关联,并进行简单的比较:

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

答案 1 :(得分:0)

您是否正在寻找Restrictions.in(String propertyName, Collection values)?在 15.2章节中。缩小结果集,您将找到一个示例:

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