如何在休眠状态下执行.filter()

时间:2018-06-27 22:08:22

标签: java hibernate

在Django Orm中,我可以执行以下操作:

people = Person.objects.filter(first_name='david')
for person in people:
    print person.last_name

在Java Hibernate的orm中我将如何做?到目前为止,我已经可以执行一次get操作,但不能执行filter子句:

Person p = session.get(Person.class, "david");

但是正确的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用本机SQL

session.beginTransaction();
Person p = getSingleResult(session.createNativeQuery("SELECT * FROM People where name = 'david'",Person.class));
session.getTransaction().commit();

和功能getSingleResult应该是这样的:

public static <T> T getSingleResult(TypedQuery<T> query) {
        query.setMaxResults(1);
        List<T> list = query.getResultList();
        if (list == null || list.isEmpty()) {
            return null;
        }
        return list.get(0);
    }

您可以获得这样的列表:

List<Person> list = session
    .createNativeQuery("SELECT * FROM People", Person.class)
    .getResultList();

答案 1 :(得分:-2)

有几种方法可以做到这一点,

或者,您甚至可以使用本机SQL查询来完成上述操作。