1

hibernate.hbm2ddl.autoテーブルの作成に使用しています。

次のように私の列を作成します。

@Column(name = "foo", length = 8000)
private String foo;

これにより、テーブルとフィールドが作成されます。varchar(8000)

私が必要としているのはstring、そこに 8000 よりも長く保存できることです。20000以上とか。

length以上を変更する8000と、テーブルは作成されません。

フィールドを手動で変更すると、次のように表示されます。

The size (20000) given to the column 'foo' exceeds the maximum allowed for 
any data type (8000).
4

2 に答える 2

4

このような大きな文字列列には Clob を使用することをお勧めします

@Lob は、プロパティ タイプに応じてプロパティを Blob または Clob に永続化する必要があることを示します。java.sql.Clob、Character[]、char[]、および java.lang.String は Clob に永続化されます。java.sql.Blob、Byte[]、byte[]、およびシリアライズ可能な型は、Blob に永続化されます。

@Lob
public String getFullText() {
    return fullText;
}

@Lob 
public byte[] getFullCode() {
    return fullCode;
}

プロパティ タイプが java.io.Serializable を実装し、基本タイプではない場合、およびプロパティに @Lob のアノテーションが付けられていない場合は、Hibernate シリアライズ可能タイプが使用されます。

ここで例を確認してください

http://tonyyan.wordpress.com/2008/10/28/clob-and-blob-saved-through-hibernate/

于 2012-10-08T11:40:51.953 に答える
2

length = 8000 の代わりに columnDefinition="LONGVARCHAR" を使用してみてください。

于 2012-10-08T07:31:12.313 に答える