我在使用hibernate的一对多映射中遇到了一个问题。
我有两个班,Person
和Address
。CCD_ 3由CCD_ 4(一对多)映射。我想得到所有人where Address = "xxxx" and person_name like '%8888%'
。我已经定义了带有Person的hibernate映射文件和带有多对一关系的地址类
Criteria criteria = session.createCriteria(Person.class,"per")
.add(Restrictions.eq("fname", obj.getInt("fname")))
.createCriteria("Addresses","add") .add(Restrictions.ilike("address",fieldValue,MatchMode.ANYWHERE));
在生成的查询中,将添加冗余的左联接以及默认的内部联接。如何从查询中禁用/删除左侧外部联接。
试试这个:
Criteria criteria = session.createCriteria(Person.class,"per")
.createAlias("per.addresses","add")
.add(Restrictions.eq("per.fname", obj.getInt("fname")))
.add(Restrictions.ilike("add.address",fieldValue,MatchMode.ANYWHERE));