|
|
|
[Hibernate] Автогенерация даты создания рекорда
|
|||
|---|---|---|---|
|
#18+
Как-то руки не доходили до этого, всегда генерил и заполнял поле сам. Тут решил разобраться. В основном источники демонстрируют простой и лаконичный вариант: Код: java 1. 2. 3. 4. К сожалению, так при создании выпадает исключение о том, что я вставляю NULL-значение. Убирая "nullable = false" (... и надеясь, что это может как-то-там и как-то-так вставит время), просто получаем NULL в рассматриваемом поле. Замечательным решение выглядит использование аннотации @PrePersist. Однако я использую Session API, а не EntityManager (кажется, так это называется), а заморачиваться с интерцепторами неохота. При рассмотрении данного вопроса наталкивался на использование аннотации @Version. И хотя в общих чертах понимаю назначение всех используемых аннотаций JPA и Hibernate, но вот то, что все сразу заработало, меня слегка ставит в тупик ... Код: java 1. 2. 3. 4. В принципе, замечательно работает. Правда, немного омрачает то, что при любом обновлении рекорда Хибер хочет обновить поле created и только атрибут "updatable = false" его сдерживает. Почему заработало, об этом стыдно спрашивать, поэтому не буду (почитаю чуток больше об оптимистических блокировках), а вот почему не работает первый способ? - это вопрос ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 22:37:37 |
|
||
|
[Hibernate] Автогенерация даты создания рекорда
|
|||
|---|---|---|---|
|
#18+
Вот открыл мануал, почитал про эти аннотации за тебя. Generated нужен когда база данных генерит значения для свойства. Хибер сам его генерить не будет. Т.е. должен быть триггер. Хибер сделает instert и перечитает из записи сгенеренное значение . Триггера у тебя видать не было? Оптимистичный же лок реализован самим хибером. Вот он по Version и генерить timestamp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 23:13:09 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2130602]: |
0ms |
get settings: |
21ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
56ms |
get topic data: |
23ms |
get forum data: |
5ms |
get page messages: |
80ms |
get tp. blocked users: |
3ms |
| others: | 291ms |
| total: | 518ms |

| 0 / 0 |
