我有一个包含对象集合的类。 例如:
class XmlRequest{
Long id;
List<PersonNmDTO> persons;
}
class PersonNmDTO{
String firstName;
String lastName;
}
我想生成如下SQL: select * from table where(firstname ='xxxx'和lastname ='yyyy')或(firstname ='aaaa'和lastname ='bbbb')或(firstname ='pppp'和lastname ='qqqq').... ...
如何使用Hibernate Criteria生成SQL的这些内容?
答案 0 :(得分:1)
这是非常基本的用法。你看过the documentation吗?
Criteria c = session.createCriteria(Person.class, "person");
Disjunction or = Restrictions.disjunction();
or.add(Restrictions.and(Restrictions.eq("person.firstName", "xxxx"),
Restrictions.eq("person.lastName", "yyyy")));
or.add(Restrictions.and(Restrictions.eq("person.firstName", "aaaa"),
Restrictions.eq("person.lastName", "bbbb")));
// ...
criteria.add(or);
List<Person> result = (List<Person>) c.list();
请注意,DTO应该表示“数据传输对象”,这是在不传输持久性实体的情况下传输数据的手段。因此,命名持久性实体PersonNmDTO
确实值得怀疑。