Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为集合集编写Hibernate查询_Hibernate_Hibernate Criteria_Detachedcriteria - Fatal编程技术网

如何为集合集编写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));