2012-03-02 9 views
1

私は、MySQLモードでオープンされたH2データベースインスタンスでDataNucleusのJDO実装を使用しています。未知のサイズのJDO DataNucleusキー文字列フィールドを作成するには?

テーブルに3つの文字列で作成されたアイテムを作成する必要があります。最後の文字列の長さは任意です。 256文字を超える値を除いて、私は次のオブジェクトを作成しました。 DataNucleusのは、自動的に256にサイズ制限を設定します。

@PersistenceCapable(objectIdClass=RawItemKey.class) 
@Index(name="BEGIN_IDX", members={"prefix", "language", "value"}) 
public class RawBeginItem { 

    @PrimaryKey 
    @Column(length=40) 
    private String prefix = ""; 

    @PrimaryKey 
    @Column(length=2) 
    private String language = ""; 

    @PrimaryKey 
    @Column(jdbcType="VARCHAR") 
    private String value = "";  

    public RawBeginItem() { 

    } 

    public RawBeginItem(String prefix, String language, String value) { 

     this.prefix = prefix; 
     this.language = language; 
     this.value = value; 

    } 

    ... 

} 

どのように私は3番目のフィールドは、任意の長さの文字列であることをJDOを伝えることができますか?どのSQL型を使用する必要がありますか?私はそれをどう宣言すべきですか?ありがとう。

+0

@Column(length = Integer.MAX_VALUE)を試しましたが、うまくいくようですが、この正しい方法ですか? – JVerstry

+0

RDBMSに列の長さが無制限であることをどのように伝えますか? CLOB? – DataNucleus

答えて

1

VARCHAR型の指定されていない長さの型は、SQL標準と互換性がありません。 JDOは、それが設定されていることを期待しています。 H2は1つも指定しないように思われますが、デフォルトでmax signed intになるので、@Column(length = Integer.MAX_VALUE)は正しいマッピングです。

+0

私は同じ結論に達しました。 CLOBは解決策ですが、キーとして使用することはできません。 – JVerstry

関連する問題