我有以下实体如何编写设置集合的Hibernate查询
@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>()
}
和语言实体
@Entity
public class Language{
private String name;
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
}
我的语言表看起来像下面
我想选择名称以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)
其中languageSet是
Set<Language> languageSet = new HashSet();
languageSet.add(new Language("Java"));
languageSet.add(new Language("C"));
我可以看到我的尝试是完全错误的......我是新来的休眠可以有一个人,请帮助我吧..
Caused by: java.sql.SQLException: No value specified for parameter 2
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2176)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2100
我已经通过提供的链接...但由于我是休眠的新手,我无法按照文档..所以我试图通过做... ...你可以让我知道查询哪些我可以在这里使用 –
好的。你上面试过的查询有什么问题? – Saket
它给出了以下错误......“没有为参数2指定值” –