Hibernate DB2 身份生成错误
Hibernate DB2 Identity Generation Error
我正在尝试使用 Hibernate 和 JtOpen 连接到 iSeries(V7R1) 中的 DB2。我遵循了 Hibernate 文档并创建了以下内容。当我连接到 DB2 时,它与 HSQLDB 一起工作,我遇到以下错误。
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)
休眠配置:
<!-- 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>
我尝试先创建 table 并连接。然后我也面临同样的问题。我尝试将生成器更改为原生、序列和身份。我如何确保休眠连接到指定的库(模式)。
我找到了解决我的问题的可能方法,但不是解决方案。
将 hbm2ddl.auto 设置为创建而不是更新解决了该问题。首先使用 create 执行以创建模式,然后我删除了 属性 现在它工作正常。
因为我们只使用现有表并在应用程序中使用之前创建新表,所以这对我有用。
我正在尝试使用 Hibernate 和 JtOpen 连接到 iSeries(V7R1) 中的 DB2。我遵循了 Hibernate 文档并创建了以下内容。当我连接到 DB2 时,它与 HSQLDB 一起工作,我遇到以下错误。
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)
休眠配置:
<!-- 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>
我尝试先创建 table 并连接。然后我也面临同样的问题。我尝试将生成器更改为原生、序列和身份。我如何确保休眠连接到指定的库(模式)。
我找到了解决我的问题的可能方法,但不是解决方案。
将 hbm2ddl.auto 设置为创建而不是更新解决了该问题。首先使用 create 执行以创建模式,然后我删除了 属性 现在它工作正常。
因为我们只使用现有表并在应用程序中使用之前创建新表,所以这对我有用。