2017-01-26 118 views
2

我正在尝试使用Hibernate和JtOpen在iSeries(V7R1)中连接到DB2。我遵循Hibernate文档并创建了以下内容。当我连接到DB2时,它与HSQLDB协同工作,我面临着下面的错误。Hibernate DB2身份生成错误

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> 

我第一次尝试创建表和连接。然后我也面临同样的问题。我尝试将发生器更改为本机,序列和标识。我如何确保hibernate连接到指定的库(Schema)。

回答

2

我发现可能的解决方法是解决我的问题。

设置hbm2ddl.auto创建而不是更新解决了问题。首先执行创建创建架构,然后我删除属性,它现在工作正常。

因为我们只使用现有的表格并在应用程序中使用之前创建新表格,所以适用于我。