Я хочу, чтобы Hibernate 3.3.0 генерировал значение, выполняя запрос SELECT до INSERT
Я не думаю, что это поддерживается.
Альтернатива # 1: Вы можете выполнить SELECT как часть логики «создания» непосредственно в своем коде.
Альтернатива # 2: использовать перехватчик Hibernate, предоставить ссылку на SessionFactory
и выполнить ВЫБОР в течение onSave
от перехватчика.
Итак, какова правильная комбинация аннотаций?
Настройка значений по умолчанию фактически не поддерживается (см. ЧЧХ-4341 ), и самым простым решением было бы IMO определить значение DEFAULT на уровне столбца. Это будет моя альтернатива # 3 . Ниже приведен пример:
@Generated(GenerationTime.INSERT)
@Column(insertable=false, columnDefinition="INT DEFAULT 20")
private int someNumber;
Я не знаю, подходит ли вам этот вариант, и я не уверен, что использование RANDOM()
в DEFAULT будет поддерживаться базой данных (как, кстати, RANDOM() * 2
может стать int
? ).