2012-05-04 5 views
4

Я получаю сообщение об ошибке при генерации последовательности для поля id в HSQLDB. Файл отображения конфигурирован так:Ошибка генерации последовательности в HSQLDB с Hibernate с использованием hbm2ddl

<hibernate-mapping> 
    <class name="ddol.rtdb.dto.Configuration" table="RTDB_CONFIGURATION"> 
     <id name="id" type="int"> 
      <column name="CONF_ID" /> 
      <generator class="sequence"> 
       <param name="sequence">CONF_ID_SEQ</param> 
      </generator> 
     </id> 
     <property generated="never" lazy="false" name="configurationDate" 
      type="java.util.Date"> 
      <column name="CONF_DATE" /> 
     </property> 

Это работает, когда я использую то же отображение с оракулом, но не генерирует последовательность при использовании HSQLDB для тестирования. Есть ли что-нибудь еще, что я должен добавить к сопоставлению?

ошибка я получаю, когда я пытаюсь вставить что-то в таблице:

ERROR org.hibernate.util.JDBCExceptionReporter - user has no privileges or object not found: CONF_ID_SEQ 

HSQLDB версия 2.2.8, Hibernate версия 3.6.10

+0

Ну, ясно, что последовательность CONF_ID_SEQ не существует в HSQLDB, вы создали ее? – Pablo

+0

Нет, я ожидаю, что hbm2ddl создаст его, как для оракула –

+0

Не знаю почему, но ясно, он не был создан. – Pablo

ответ

0

Создать последовательность (CONF_ID_SEQ - если он не существует) и убедитесь, что у вас есть разрешение "grant".
В качестве альтернативы вы можете создать "synonym" для последовательности и предоставить разрешение "grant" для всех пользователей или для определенных пользователей. Тогда это должно сработать.

E.g 
    Consider, You are creating Sequence as "dbauser". Now, some other "user"(who don't have access) trying to use it, 
then u will get "user has no privileges" error. 
    In that case you can use above strategy. 
Смежные вопросы