2017-01-26 8 views
2

HibernateとJtOpenを使用してiSeries(V7R1)のDB2に接続しようとしています。私はHibernateのドキュメンテーションに続き、以下を作成しました。私はDB2に接続するとHSQLDBで動作します。私は以下のエラーに直面しています。Hibernate DB2 ID生成エラー

WARN: SQL Error: -204, SQLState: 42704 
Jan 27, 2017 1:40:25 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 
ERROR: [SQL0204] SYSSEQUENCES in SYSIBM type *FILE not found. 
Jan 27, 2017 1:40:26 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop 
INFO: HHH10001008: Cleaning up connection pool [jdbc:as400://harainbw:446/rajarra] 
Initial Session Factory creation failed. org.hibernate.exception.SQLGrammarException: Unable to build DatabaseInformation 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.repsrv.infopro.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:14) 
    at com.repsrv.infopro.util.HibernateUtil.<clinit>(HibernateUtil.java:7) 
    at com.repsrv.infopro.EventManager.createAndStoreEvent(EventManager.java:19) 
    at com.repsrv.infopro.EventManager.main(EventManager.java:14) 

Hibernate構成:

<!-- Database connection settings --> 
    <property name="connection.driver_class">com.ibm.as400.access.AS400JDBCDriver</property> 
    <property name="connection.url">jdbc:as400://myserver:446</property> 
    <property name="connection.username">uuuuu</property> 
    <property name="connection.password">xxxxx</property> 

    <!-- JDBC connection pool (use the built-in) --> 
    <property name="connection.pool_size">1</property> 

    <!-- SQL dialect --> 
    <property name="dialect">org.hibernate.dialect.DB2400Dialect</property> 

    <!-- Enable Hibernate's automatic session context management --> 
    <property name="current_session_context_class">thread</property> 

    <!-- Disable the second-level cache --> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property> 

    <!-- Drop and re-create the database schema on startup --> 
    <property name="hbm2ddl.auto">update</property> 

    <mapping resource="com/repsrv/infopro/domain/Event.hbm.xml" /> 

</session-factory> 

リソース構成:

<class name="Event" table="EVENT" schema="mylib"> 
    <id name="id" column="EVENT_ID"> 
     <generator class="sequence" /> 
    </id> 
    <property name="date" type="timestamp" column="EVENT_DATE" /> 
    <property name="title"/> 
</class> 

Iは最初のテーブルを作成し、接続しようとしました。それから私も同じ問題に直面しています。ジェネレータをネイティブ、シーケンス、アイデンティティに変更しようとしました。休止状態がライブラリ(スキーマ)に接続していることを確実にする方法は何ですか。

答えて

2

解決策ではありませんが、私の問題の回避策が見つかりました。

更新の代わりに作成するhbm2ddl.autoを設定すると、問題が解決しました。最初にスキーマを作成するためにcreateを実行した後、プロパティを削除して、今は正常に動作します。

アプリケーションで使用する前に、既存のテーブルのみを使用して新しいテーブルを作成するので、これは私にとっては役に立ちます。

関連する問題