2012-02-16 13 views

答えて

4

これは、実装を隠すことによって使用法を簡略化する方法です。 Clobデータを使用する場合は、以下のコードを使用する必要があります。私はバージョンhibernate 3.6でテストしました。あなたがorg.hibernate.impl.SessionImplクラスのソースコードを読めば ​​

は今、あなたは休止状態これをどのように処理するか、内部で知っているだろう、それの作業についてのあなたの第二の点を来ります。

public LobHelper getLobHelper() 
/*  */ { 
/* 2245 */  if (this.lobHelper == null) { 
/* 2246 */  this.lobHelper = new LobHelperImpl(this, null); 
/*  */  } 
/* 2248 */  return this.lobHelper; 
/*  */ } 
+0

おかげさまで簡単に答えました。しかし、これは、新しい休止状態のセッションを取得または開く必要がありました。非推奨のHibernate.createClob(Reader reader、int length)のような静的メソッドはありませんか? – Ashraf

+0

ほとんどの場合、BlobまたはClobデータ型を作成するときに、そのデータ型をDBに格納する必要があります。表示したいときは、それをbyte []などに変換する必要があります。それが、私が信じるセッションの中で動かされた理由です。 – ManuPK

0

は私がcreateBlobを用いた

Clob clob = new SerialClob("Some very long String.......".toCharArray()); 
+0

**これは可能ですが作成されたClobが正しく動作しません!** たとえば、 'yourClob.getAsciiStream()'を呼び出すとSerialException: 'サポートされていない操作です。 SerialClobは、完全に実装されたClobオブジェクトでインスタンス化されていない限り、ASCIIストリームとしてCLOB値を返すことはできません.'詳細については、SerialClobの実装を参照してください。 –

5

例えばジャバjavax.sql.rowset.serial.SerialClob

を使用して、 このために別の良い代替を発見した(バイト[] )をそのクラスから削除します。私は新しいクラスと次のメソッドを作成しました

public static Blob createBlob(byte[] bytes) { 
     return NonContextualLobCreator.INSTANCE.wrap(NonContextualLobCreator.INSTANCE.createBlob(bytes)); 
    } 
関連する問題