我的问题是,我有一个类:
@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查询。
有没有办法用标准处理这个?
答案 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();