Как сделать .filter () в спящем режиме - PullRequest
0 голосов
/ 28 июня 2018

В форме Джанго я могу сделать что-то вроде следующего:

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

Как бы я сделал эквивалент в Java Hibernate Orm? До сих пор мне удавалось сделать один запрос get, но не предложение фильтра:

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

Каков будет правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

вы можете использовать нативный 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();
0 голосов
/ 28 июня 2018

Есть несколько подходов, чтобы сделать это, вот так:

В качестве альтернативы вы можете даже использовать собственный SQL-запрос для выполнения вышеупомянутых действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...