Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate. Не работает FetchType.LAZY при NotFoundAction.IGNORE / 1 сообщений из 1, страница 1 из 1
02.05.2015, 22:31
    #38950677
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hibernate. Не работает FetchType.LAZY при NotFoundAction.IGNORE
Изучаю hibernate. У меня есть такая сущность:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
@Entity
@Table(name ="foo_tbl") 
Class Foo{

...

    @OneToOne(fetch = FetchType.LAZY, optional = true)
    @LazyToOne(LazyToOneOption.PROXY)
    @NotFound(action = NotFoundAction.IGNORE)
    @JoinColumn(name="next_item", unique = true, nullable = false)
    @Fetch(FetchMode.SELECT)            
    Foo getNext(){return nxt;}

...
}

В таблице хранятся однонаправленые очереди из элементов Foo. Причем, колонки там объявлены как NOT NULL. Просто в какой-то момент next_item указывает на несущестувующий итем.

Допустим, весь список нам ненужен никогда. Допустим, когда мы бежим по списку через getNext() и упираемся в конец списка - нам надо, чтобы очередной getNext() вернул null.

У меня не получается совместить ленивое извлечение элементов (смотрю по логу mysql) с отдачей null вконце спика. В таком виде, как я привел код - по факту вижу, что нету ленивого извлечения (длина очереди - около 10 элементов - и я вижу 10 запросов). Если убрать аннотацию @NotFound(action = NotFoundAction.IGNORE), то ленивое извлечение начинает работать, но перестает работать null в этом поле, и вместо него бросается ObjectNotFoundException при достижении конца очереди. Флажок optional я пробовал ставить по-разному. Это не помогает.

Для меня сейчас это выглядит как баг, т.к. внятного объяснения такого поведения я не вижу. Но тот факт что с хибернейтом я разбираюсь первый вечер, не позволяет так вот сразу сказать что это есть баг. Есть большое подозрение, что внятное объяснение все же есть(хотя гугл ничего не знает)

Как такое сделать?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate. Не работает FetchType.LAZY при NotFoundAction.IGNORE / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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