Hibernate Criteria对象集合

时间:2011-10-21 16:15:32

标签: hibernate orm

我有一个包含对象集合的类。 例如:

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的这些内容?

1 个答案:

答案 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确实值得怀疑。