2012-05-04 5 views
4

HSQLDBのidフィールドのシーケンスを生成中にエラーが発生します。マッピングファイルは次のように立体配置のされていますhbm2ddlを使用してHibernateでHSQLDBのシーケンスを生成する際にエラーが発生する

<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> 

それは私がOracleと同じマッピングを使用するときに動作しますが、テストのために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がoracle用に作成すると思います。 –

+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. 
関連する問題