在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");
但是正确的方法是什么?
答案 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查询来完成上述操作。