文字列のタイプを設定するのに問題があります。
public void setTextDesc(String textDesc) {
this.textDesc = textDesc;
}
@Column(name="DESC")
@Lob
public String getTextDesc() {
return textDesc;
}
それが機能しなかったので、mysqlスキーマを確認しましたが、varchar(255)のままです。
@Column(name="DESC", length="9000")
または
@Column(name="DESC")
@Type(type="text")
タイプをTEXTにしようとしていますが、どんなアイデアでも大歓迎です!
「mysqlスキーマをチェックしてもvarchar(255)のままです」-Hibernateがデータベースを自動的に変更することを期待していましたか?しません。 hibernate.hbm2ddl.auto
が設定されていても、Hibernateが既存の列定義を変更するとは思わない。
新しいデータベース作成スクリプトを生成する場合、@Lob
は、長さを明示的に指定しない場合(または、65536未満の場合)に「TEXT」型の列を生成する必要があります。 @Column
アノテーションで明示的に型を宣言することにより、いつでも強制できますが、データベース間で移植できないことに注意してください。
@Column(name="DESC", columnDefinition="TEXT")
データベースで「文字列」タイプのデフォルトのマッピングを「テキスト」タイプに設定する方法があります。
エンティティがあるパッケージに次のファイルを保存します。パッケージ名も変更してください。
これにより、指定されたパッケージのデータベース内のすべての「文字列」型フィールドが「テキスト」型に設定されます。
package-info.Java
@TypeDefs({
@TypeDef(name="string",defaultForType=Java.lang.String.class,typeClass=org.hibernate.type.TextType.class)
})
package com.package.app;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;