2011-10-17 10 views
1

ホストデータベーステーブルからアプリケーションに入力される特殊文字をほとんど削除しないために、独自のデータ型を作成する必要がありました。そのsqlTypes()int[] { Types.CHAR }として定義される@Type(type = xxx)の列の列の長さを指定する

@Column(name="LAST_UPDATED_BY", nullable=false, length=24) 
@Type(type="com.xx.CleanedString") 
public String getLastUpdatedBy() { 
    return this.lastUpdatedBy; 
} 
public void setLastUpdatedBy(String lastUpdatedBy) { 
    this.lastUpdatedBy = lastUpdatedBy; 
} 

CleanedString実装UserType。基本的には、char配列を反復して特殊文字をフィルタリングした後にStringを再構築します。

public int[] sqlTypes() { 
    return new int[] { Types.CHAR }; 
} 

アプリケーションは正常に動作しますが、問題が発生していますDBUnit。 HibernateがHSQLDBでテーブルを作成すると(hibernate.hbm2ddl.autocreate-dropに設定されている)、長さが1のタイプCHARACTERのカラムが作成されています。上記の24の長さの属性は無視されます。

この列に列の長さを指定する方法はありますか?

答えて

1

は、それはHSQLDBの表の作成時に正常に動作しますが、それはvarcharデータ型でないDB2データベースの文字(n)のデータ型と相互作用したときに何が起こるかTypes.VARCHAR

+0

にそれを設定してみてください。 – phewataal

関連する問題