проверить, существует ли в таблице спящий объект - PullRequest
1 голос
/ 05 мая 2011

Есть ли способ проверить, существует ли экземпляр, который вы пытаетесь сохранить в таблицу, уже в этой таблице, но вы не знаете такой идентификатор:

MyObject instance = (MyObject) session.get(MyObject.class, new Integer(5));

Есть ли альтернативный способ?проверить, находится ли ваш объект в БД без использования идентификатора?

1 Ответ

3 голосов
/ 05 мая 2011

Сначала вы должны решить, когда считаете два экземпляра MyObject равными с точки зрения их свойств, а затем выполнить запрос.

Например, допустим, у вас есть объект Country с идентификатором, именем и валютой. Две страны можно считать равными, если они имеют одинаковое название. Но если у вас есть сущность Person, это может быть сочетание их имени, имени, даты рождения и места рождения, что делает их функционально равными.

Чтобы продолжить работу с примером моей страны, вот как выполнить запрос:

String hql = "select Country c where c.name = :theName";
Query q = session.createQuery(hql);
q.setString("theName", theCountryIWantToSave.getName());
Country c = query.uniqueResult();
if (c != null) {
    // a country with the same name as theCountryIWantToSave already exists
}

Это довольно простые вещи, правда. Вам следует прочитать Руководство пользователя Hibernate .

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