Hibernate を JPA プロバイダーとして使用し、大きなオブジェクト フィールドが でマークされたクラスを持っています。
@Lob
@Type( type = "org.hibernate.type.TextType" )
private String someString;
列は次のように作成されます
SOMESTRING LONG()
これは PostgreSQL と MySQL で問題なく動作します。オブジェクトを永続化するときに Oracle を使用する
entityManager.persist( object );
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
例外があります。
注釈を削除する@Type( type = "org.hibernate.type.TextType" )
と、Oracle の問題は解決しますが、Hibernate/PostgreSQL でユーロ記号を LOB 文字列プロパティに格納できないで説明されているように、PostgreSQL ではエンコードの問題が発生します。
out プログラムが PostgreSQL と Oracle の両方で動作するように、大きなテキスト フィールドを定義する方法を知りたいです。純粋な JPA ソリューションが最適ですが、Hibernate 固有のソリューションでも十分です。
編集:
本当の例外:
java.sql.BatchUpdateException: ORA-22295: cannot bind more than 4000 bytes data to LOB and LONG columns in 1 statement
今、見逃した例外が問題を説明しており、実際、私が保持しているオブジェクトには大きな文字列(少なくとも1つの長いDBID)以上のものがあります。