powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как получить id-шник после инсерта в Hibernate
10 сообщений из 10, страница 1 из 1
Как получить id-шник после инсерта в Hibernate
    #34577544
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим, после выполнения
Код: plaintext
1.
sessin.save(someObject);
Мне нужно получить id-шник, автоинкрементное поле в таблице, который был сгенерирован после добавления записи.

Читал в доках, нигде толком ничего не нашел.
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34577556
pasha701
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
someObject.getId()
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34577584
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pasha701
Код: plaintext
1.
someObject.getId()


И как? Я его только создал. Задал только некоторые поля. ID-шника там нету, он проставляется только после приведенного выше кода.

Мне он нужен для того, чтобы потом записать второй объект. (этот id-шник fk во втором объекте).

Первый раз он записывает, а второй раз уже нет. Я хочу сохранить первый объект. Затем по ID-шнику взять его из базы, и записать второй объект.
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34577847
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищи Transient Persistance в великих книгах
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34577904
pasha701
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
QuessirЯ хочу сохранить первый объект. Затем по ID-шнику взять его из базы, и записать второй объект.
После сохранения Hibernate сам поставит id обекту, доставать из базі его не нужно.
Код: plaintext
1.
2.
sessin.save(someObject);
System.out.println(someObject.getId());
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34580723
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Quessir pasha701
Код: plaintext
1.
someObject.getId()


И как? Я его только создал. Задал только некоторые поля. ID-шника там нету, он проставляется только после приведенного выше кода.

Мне он нужен для того, чтобы потом записать второй объект. ( этот id-шник fk во втором объекте ).

Первый раз он записывает, а второй раз уже нет. Я хочу сохранить первый объект. Затем по ID-шнику взять его из базы, и записать второй объект.

Ты вообще-то неправильно делаешь, если пользуешься ID-шником напрямую. Хибернейт при правильно прописанном маппинге без проблем сожрет и объект.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 class  Person{
     private   Long  id;
     private  String fio;
     private  Date birthDate;

    конструкторы, геттеры и сеттеры.
}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 class  Document{
     private   Long  id;
     private  String number;
     private  String serie;
    // Вот так делать можно, надо правильно описать кусок <many-to-one.../> в Document.hbm.xml
     private  Person owner;

    конструкторы, геттеры и сеттеры.
}
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34581296
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне он нужен для того, чтобы потом записать второй объект. (этот id-шник fk во втором объекте).

Первый раз он записывает, а второй раз уже нет. Я хочу сохранить первый объект. Затем по ID-шнику взять его из базы, и записать второй объект.

Если имеет место такой case, то совершенно очевидно, что Hibernate используется не верно. При правильном использовании вопросов о том, чтобы получить id одного объекта, чтобы скормить его другому объекту, не должно возникать.
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34581561
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маппинг у меня написан правильно.

Вот допустим пример кода.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Device theDevice =  new  Device();
Container theContainer =  new  Container();

theDevice.setModelId(modelId);

//вот так я решил проблему
 Long  generated_id = ( Long ) session.save(theDevice);
//заново взял тот объект
Device newDevice = (Device) session.load(Device. class , generated_id);

// deviceId у меня замапен как fk к device-у. передаем туда объект device
theContainer.setDeviceId(newDevice);

session.save(theContainer);

Когда я не выбирал объект из базы после insert(то бишь save), он не мог мне сохранить контэйнер почему-то.
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34581662
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень советую почитать книжечку по hibernate. Чтобы понимать жизненый цикл у объектов, какие состояния жизнинего цикла бывают, как объекты в эти состояния переходят, что такое сессия, когда происходит синхронизация с БД, что такое кэш первого уровня, что такое устойчивая достижимость ... А то получиться использование jdbc через hibernate.
...
Рейтинг: 0 / 0
Как получить id-шник после инсерта в Hibernate
    #34581852
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ok. Спасибо за совет!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как получить id-шник после инсерта в Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]