Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, spring, struts - передать созданный обьект или его id / 7 сообщений из 7, страница 1 из 1
21.09.2007, 20:16:34
    #34819010
brejnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, spring, struts - передать созданный обьект или его id
Hibernate, Spring, Struts.
В некотором struts action создаю экземпляр некоего класса CallEvent( класс с нек полями, замапленный через Hibernate к БД). Добавляю этот класс( новую запись) в БД:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 public   class  CallEventDAOHibernate  extends  BaseDAOHibernate  implements  CallEventDAO
{
...    
     public   void  createCallEvent (CallEvent a)
    {
        getHibernateTemplate ().save (a);
    }
...
}

Теперь мне нужно передать ссылку на новую запись в БД в другой action.

Пришло на ум два варианта.
1. Передать id новой записи через параметры. Так вот, а как мне получить id новой записи? id - счетчик.
2. Передать через ActionForm. Получится ли? В форму добавил поле типа CallEvent, геттер и сеттер, в первом action делаю setCallEvent(event), в следующем action - getCallEvent(). Итог: словил NullPointerException.
...
Рейтинг: 0 / 0
21.09.2007, 22:01:00
    #34819111
avdj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, spring, struts - передать созданный обьект или его id
В хибере после добавления entity в базу можно вызвать метод getGeneratedKey() если я не ошибаюсь.... А передать его другому экшену можно через некий буфер системы - добавил, поместил туда ид и имя класс сущности, а другой экшен пусть смотрит, что добавили и какого это типа...
...
Рейтинг: 0 / 0
21.09.2007, 22:35:26
    #34819133
brejnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, spring, struts - передать созданный обьект или его id
avdjВ хибере после добавления entity в базу можно вызвать метод getGeneratedKey() если я не ошибаюсь....

А можно подробнее про getGeneratedKey()? Доку не нашел про это.
...
Рейтинг: 0 / 0
21.09.2007, 23:26:46
    #34819157
avdj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, spring, struts - передать созданный обьект или его id
Вот собственно пример
/**
* Добавить объект в базу.
* @param o объект.
* @return сгенерированный ключ объекта.
*/
public final Integer save(Object o) {
Integer result = null;
if (o == null) return result;
validateOnAdd(o);
Session sess = HibernateUtil.currentSession();
Transaction tx = sess.beginTransaction();
sess.save(o);
result = (Integer)sess.getIdentifier(o);
tx.commit();
HibernateUtil.closeSession();
return result;
}
...
Рейтинг: 0 / 0
22.09.2007, 09:26:06
    #34819283
brejnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, spring, struts - передать созданный обьект или его id
Спасиба, работает!
Только я переделал немного код:

Код: plaintext
1.
2.
3.
        getHibernateTemplate ().save (a);
        Session session = getHibernateTemplate ().getSessionFactory ().getCurrentSession ();
         Long  result = ( Long )session.getIdentifier(a);
...
Рейтинг: 0 / 0
26.09.2007, 19:24:00
    #34829333
Олег Гапон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, spring, struts - передать созданный обьект или его id
А я наифный думал что можно так
Код: plaintext
1.
 Long  id = ( Long ) session.().save(a);
...
Рейтинг: 0 / 0
26.09.2007, 19:25:25
    #34829338
Олег Гапон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, spring, struts - передать созданный обьект или его id
как всегда ошибся..

Код: plaintext
1.
 Long  id = ( Long ) getHibernateTemplate ().save(a);
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, spring, struts - передать созданный обьект или его id / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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