0

Hibernate の UserType を拡張する ClobType があります。これは、データベースで見つかった clob を文字列に変換するという、期待どおりのことを行います。clob 列を ClobType にマップすると、JSP ページでアクセスすると、それらの列が適切にレンダリングされます。

しかし、値を設定しようとしている今、私は困惑しています。JSPページに書くことができるので${myObject.longField}、おそらく言うことができると教えてくれます

String s = myObject.getLongField().toString();

LongField が ClobType 型であるにもかかわらず、文字列を取得します。

私が知らないのは、セッターの使い方です。ClobType は簡単にインスタンス化できますが、blob として永続化するために必要な文字列データを与えるにはどうすればよいでしょうか?

ClobType clobType = new ClobType();
String s = "... a really REALLY long string ...";
/* a miracle occurs */
myObject.setLongField( clobType );
myObjectDAO.saveOrUpdate( myObject );

ClobType に文字列値を与えるために必要な奇跡は何ですか?

または、私の 2 つのセッターが ClobTypes ではなく Strings を返すより良い (またはより適切な) 方法はありますか? これを行う特別なマッピングはありますか? 私のビジネス ロジックでは、特定の列が BLOB として実装されていることを知る必要はありません。

4

1 に答える 1

1

UserType合理的に最新の休止状態を使用している場合、カスタムをまったく使用せずに Java String をデータベース CLOB にマップできると思います。

試す

@Lob
public String getLongField() { return longField; }

longField だけでString.

これが機能する場合、それはあなたがしていることよりもはるかに簡単になります.

于 2012-05-10T22:23:32.267 に答える