如何为集合集编写Hibernate查询
我有以下实体如何为集合集编写Hibernate查询,hibernate,hibernate-criteria,detachedcriteria,Hibernate,Hibernate Criteria,Detachedcriteria,我有以下实体 @Entity public class Employee{ private Integer id; private String name; private String address; private Date created; @OneToMany(mappedBy = "employee") private Set<Language> languages = new HashSet<AlbumUser&g
@Entity
public class Employee{
private Integer id;
private String name;
private String address;
private Date created;
@OneToMany(mappedBy = "employee")
private Set<Language> languages = new HashSet<AlbumUser>()
}
我的语言表如下所示
DetachedCriteria criteria = DetachedCriteria.forClass(Employee.class,"employee");
criteria.add( Restrictions.ilike("name", "A%") );
criteria.add(Restrictions.in("languages",languageSet));
return getHibernateTemplate().findByCriteria(criteria)
我想选择所有姓名以A开头、懂java和C的员工,为此,我将尝试如下操作
DetachedCriteria criteria = DetachedCriteria.forClass(Employee.class,"employee");
criteria.add( Restrictions.ilike("name", "A%") );
criteria.add(Restrictions.in("languages",languageSet));
return getHibernateTemplate().findByCriteria(criteria)
语言集在哪里
Set<Language> languageSet = new HashSet();
languageSet.add(new Language("Java"));
languageSet.add(new Language("C"));
这应该可以通过使用Hibernate与标准的关联来实现。虽然您看起来几乎是正确的(虽然我不确定为什么要使用DetachedCriteria,而不是简单的条件),但您应该参考以下内容--了解如何构建此类查询的更多信息。尝试以下方法:
criteria.add(Restrictions.in("languages.name",languageNames));
其中languageNames是语言名称的集合。
如果出现无法解决“语言”问题的错误,请添加新别名。我已经浏览了提供的链接。。。但是由于我是一个刚开始冬眠的人,所以我无法按照文档进行操作。所以我正在尝试通过实践来学习。。。你能让我知道我可以在这里使用的查询吗?你能给问题添加跟踪吗?
criteria.add(Restrictions.in("languages.name",languageNames));