Я разрабатываю приложение, используя oracle 11g, Java (struts2) и Hibernate.
У меня есть таблица с именем mytemp со столбцом mytemp_id типа NUMBER (22,0).
В моем файле mytemp.hbm.xml идентификатор файла указан ниже.
<id name="mytempId" type="big_decimal">
<column name="MYTEMP_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">MYTEMP_TEMP_ID_SEQ</param>
</generator>
</id>
В моей базе данных Oracle последовательность с именем «MYTEMP_TEMP_ID_SEQ» создана и отлично работает в Oracle.
Теперь, когда я пытаюсь вставить запись, используя спящий режим, я получаю следующую ошибку
org.hibernate.id.IdentifierGenerationException: этот генератор идентификаторов генерирует длинные, целые, короткие или строковые
Кажется, что, поскольку моя последовательность возвращает число, спящий режим рассматривает его как BigDecimal, в то время как класс генератора последовательности спящего режима рассматривает значения, которые являются длинными, целочисленными, короткими и только строковыми.
У Hibernate не должно быть проблем с BigDecimal. Но я думаю, что они не реализовали BigDecimal для генератора последовательности
Может ли кто-нибудь помочь мне решить проблему?
Спасибо.