Есть ли способ загрузить объект в Hibernate без написания запроса или без идентификатора? - PullRequest
2 голосов
/ 02 сентября 2010

Я могу сохранить объект в БД из Java следующим образом:

Таблица Person:

varchar name  
varchar groupID  
varchar emailAddress  
key on (name, groupID)

И в Java

Person foo = new Person("dhackner", "3");  
session.persist(foo);

Два аргумента делаютдо ключа.В этом случае name и groupID являются уникальным ключом в БД и, таким образом, достаточны для четкой идентификации любой конкретной строки в таблице (может иметь несколько записей «dhackner», несколько записей «group 3», но только одну «dhackner, group»).3 "запись).

Если при правильной настройке этот код будет успешно завершен, то

    name | groupID | emailAddress  
dhackner |       3 |           ""

Я хотел бы иметь возможность сделать обратное без написания запроса или использования каких-либо автоматически сгенерированныхИдентификаторы:

Персона таблицы:

    name | groupID | emailAddress  
dhackner |       3 |  "something"  
dhackner |       4 |     "foobar"  
   other |       3 |     "barfoo"

На Java:

Person foo = new Person("dhackner", "3");  
foo.load(); // something like this
Assert.assertEquals(foo.getEmailAddress(), "something");

1 Ответ

5 голосов
/ 02 сентября 2010

Да, есть, это называется запрос по примеру Это довольно просто в Hibernate:

Person foo = new Person("dhackner", "3");
foo = session.createCriteria(Person.class).add(Example.create(foo)).uniqueResult();
Assert.assertEquals(foo.getEmailAddress(), "something");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...