Найти объект (ы) по произвольным атрибутам в Hibernate - PullRequest
3 голосов
/ 04 февраля 2012

Я относительно новичок в Hibernate (4) и ORM в целом и хотел бы знать , который является самым простым или удобным способом найти объект (ы) по атрибутам .

class Foo {

    private Long id;

    private String name;

    private Integer age;

    private Integer favoriteNumber;

    private String catchphrase;

}

Скажем, у меня есть экземпляр Foo, атрибуты установлены произвольно, или, другими словами, я не знаю, какие атрибуты установлены (идентификатор может быть не установлен).

На основеатрибуты, которые не null, я хотел бы найти любой соответствующий объект (ы) из базы данных.

В идеале я хотел бы использовать такой метод:

session.getCurrentSession().find(foo);который возвращает список Foo.

PS. Я не хочу использовать рефлексию для достижения этой цели!

1 Ответ

5 голосов
/ 04 февраля 2012

Лучший подход к вашему варианту использования - использовать запрос по примеру:

session.getCurrentSession()
     .createCriteria(Foo.class).add(Example.create(foo)).list();

UPDATE: Запрос по примеру не включает атрибут id в поиск. Я предположил, что вы не заинтересованы в запросе по идентификатору. Если вам известен идентификатор и вас интересует запрос по идентификатору, вам нужно сделать отдельное:

(Foo) session.getCurrentSession().get(Foo.class, fooId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...