0
所以我有兩張桌子,一張人名錶和一張暱稱表,暱稱是指人。每個人可能有0個,1個或更多的暱稱。註釋的Hibernate-如何從聯接列表中選擇?
PERSON NICK_NAME
--------- ---------
ID ID_FK
NAME NICK_NAME
//other stuff
我的Hibernate對象是這樣的:
@Entity
@Table(name="PERSON")
public class Person{
@Id
@Column(name="ID")
private String id;
@Column(name="NAME")
private String name;
@ElementCollection
@CollectionTable(name="NICK_NAME", [email protected](name="ID_FK"))
@Column(name="NICK_NAME")
private List<String> nickNames;
//other stuff
}
我想,給一個名字,檢索誰擁有這個名字或暱稱所有的人。也就是說,如果名爲「Robert」的人有暱稱「Bobby」和「Bob」,我希望所有3人都能找回他。
public List<Person> retrieveByName(String name){
Session session = this.sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(Person.class, "person");
criteria.setResultTransformer(Person.DISTINCT_ROOT_ENTITY);
Criterion mainName = Restrictions.eq("name", name);
Criterion nickName = Restrictions.eq("person.nickNames", name);
criteria.add(Restrictions.or(mainName, nickName));
return criteria.list();
}
但我在這裏得到一個SQL錯誤
java.sql.SQLException: Missing IN or OUT parameter
什麼是做到這一點的正確方法?