2017-02-02 9 views
0

私は最近Spring Bootをアップグレードしましたが、これで休止状態のアップグレードが行われました。残念ながら、エンティティ列@Type(StringClobType)注釈は推奨されていません。ドキュメントはMaterilizedClobTypeに切り替える必要があることを伝えています。JPA/Hibernate:StringClobTypeは非推奨

残念ながら、これは私のアプリケーションを壊しました。

私はPostgreSQL 9.5を使用しています。 注釈では、データベースにtextタイプが作成され、フィールドに長いテキストを格納することができました。残念ながら、Hibernateがある種のLOB idを期待しているときに文字列リテラルが戻ってきます。

これはエラーを与える:PGのTextデータ型にマップBad value for type long

+1

Postgresは、その拡張データがJDBCへの 'text'マップをどのようにタイプするのかを文書化するのはうまくいかないが、' org.hibernate.type.TextType'が、タイプ 'テキスト'。 Hibernateは、それがJDBCの 'LONGVARCHAR'型にマップされていると言います。そのタイプの特性がPGの 'Text'と完全に一致することは明らかではありませんが、近いと思われます。 –

+1

あなたのメンバー変数の上に** @ Lob **アノテーションだけを記述することができます。データベースにオブジェクトを永続させている間、Hibernateは制限を超えている場合は自動的にCLOBをとり、データベース内の** text **と入力します。 – Chip

+0

@ジョンボールリンガー、あなたは頭の爪を打つ。ありがとうございました!これに合法的な回答を追加して、それを受け入れたものとしてマークします。 – Spider

答えて

1

休止@Type値はorg.hibernate.type.TextTypeです。これはあなたが使うべきものです。

これは価値がありますが、これはorg.hibernate.type.MaterializedClobTypeの兄弟です。これはCLOBにマップされています。両方ともorg.hibernate.type.AbstractLongStringTypeのサブクラスです。