powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: инициализация внешний соединений
6 сообщений из 6, страница 1 из 1
Hibernate: инициализация внешний соединений
    #33541673
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два класса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<class name="Document">
  <id name="id"/>
  <many-to-one name="status" class="Status" outer-join="true"/>
</class>

<class name="Status">
  <id name="id"/>
  <property name="name"/>
</class>

Поле Document.status в базе допускает NULL. При вытаскивании экземпляров класса Document Hibernate выставляет ему status = null. Можно ли его заставить каким-либо образом генерировать значение этого свойства? Поскольку иначе в Struts я получаю NullPointerException при попытке на форме определить его значение:

Код: plaintext
1.
2.
3.
<html:select property="status.id">
  <html:options collection="statuses" property="id" labelProperty="name"/>
</html:select>

При одиночном экземпляре это можно сделать самостоятельно, на списке тоже можно, но может есть более прямой способ?
...
Рейтинг: 0 / 0
Hibernate: инициализация внешний соединений
    #33541924
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну можно например в getter'е Document.getStatus() написать

Код: plaintext
1.
2.
3.
4.
 if  (status ==  null )
  status = Status.DEFAULT_STATUS;

 return  status;

но imho - это уже проблемы представления, что мешает в jsp if использовать?
...
Рейтинг: 0 / 0
Hibernate: инициализация внешний соединений
    #33541950
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri wrote:
> но imho - это уже проблемы представления, что мешает в jsp if использовать?

Так для JSP требуется, чтобы это свойство было инициализированно, там
двузначности (есть/нет) быть не должно.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Hibernate: инициализация внешний соединений
    #33542187
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а jstl <c:if ... /> ?
...
Рейтинг: 0 / 0
Hibernate: инициализация внешний соединений
    #33543369
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriа jstl <c:if ... /> ?
А смысл?;) Есть property="status.id" , Куда-то идентификатор выбранного статуса по-любому сохранять надо, наилучшим решением было бы обязательность инициализации поля status, обращение к его полю id не должно вызывать NullPointerException. Впрочем, делать это в getStatus() может и является наилучшим выходом.
...
Рейтинг: 0 / 0
Hibernate: инициализация внешний соединений
    #33608123
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis PopovВпрочем, делать это в getStatus() может и является наилучшим выходом.
Лучше бы я этого не делал. Получается следующее: если загрузить экземпляр класса Document, в котором поле status инициализируется именно таким образом, то при закрытии сессии Hibernate пытается сохранить экземпляр обратно в базу, даже если это поле не читалось. В результате идет мощнейший поток необязательных обновлений. Но это еще не все, дополнительно можно нарваться на TransientObjectException. Единственным местом ИМХО остается изначальная инициализация поля.
Код: plaintext
1.
2.
 public   class  Document {
   private  Status =  new  Status();
}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: инициализация внешний соединений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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