環境に応じて、Oracleまたは組み込みH2データベースで実行する必要のあるアプリケーションがあります。これまで、組み込みH2データベースの代わりにMySQLデータベースを使用していましたが、移行することにしました。
Hibernate 3.3.1GAを使用しています(制限されているため、更新できません)。OracleとMySQLの両方ですべてが正常に機能しますが、H2データベースを使用しようとするとハングし続けます。問題は、BLOB(シリアル化されたJavaオブジェクト)を含む列にあるようです。テーブルが空の場合でも、実行はハングします。
SLF4J出力(ログレベルALL):
TableMetadata.java:org.hibernate.tool.hbm2ddl.TableMetadata:<init>:62 INFO table found: DATABASE.PUBLIC.JAVA_OBJECTS
org.hibernate.tool.hbm2ddl.TableMetadata:<init>:63 INFO columns: [id, last_update, markdeleted, class, object]
org.hibernate.connection.DriverManagerConnectionProvider:closeConnection:152 TRACE returning connection to pool, pool size: 1
この時点で、プログラムはハングしているようです。以前のログ出力は正常のようであり、このテーブルが使用されていない場合(hibernate.cfg.xmlから削除されている場合)、プログラムは正常に起動します。
hibernate.cfg.xml(抜粋)
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
<property name="hibernate.connection.url">jdbc:h2:file:database</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.default_schema">PUBLIC</property>
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
テーブルの作成文字列:
CREATE TABLE java_objects (
id int(11) NOT NULL AUTO_INCREMENT,
class varchar(255) NOT NULL,
object blob NOT NULL,
last_update timestamp AS CURRENT_TIMESTAMP,
markDeleted tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (id)
) ;
そして最後にエンティティxml
<hibernate-mapping>
<class name="server.DataBean" table="java_objects">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="type" column="class" />
<property name="object" not-null="true">
<column name="object" sql-type="BLOB" />
</property>
<property name="lastUpdate" column="last_update" type="timestamp" />
<property name="markDeleted" type="boolean" />
</class>
</hibernate-mapping>
誰かが私が間違っていることを知っていますか?ブロブを処理するときにh2が異なることを期待しているのは何ですか?