2012-03-02 40 views
1

我使用MySQL的模式打开一个H2数据库实例DataNucleus将的实现JDO的。如何创建未知大小的JDO DataNucleus密钥字符串字段?

我需要创建取得了一个表三根弦的项目。最后一个字符串可以是任意长度。我创建了以下对象,除了大于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; 

    } 

    ... 

} 

我怎么能告诉JDO的第三个领域是任何长度的字符串?我应该使用哪种SQL类型?我应该如何申报?谢谢。

+0

我试过@Column(长度= Integer.MAX_VALUE),它似乎工作,但这是正确的方式? – JVerstry 2012-03-02 22:40:41

+0

你如何告诉RDBMS一列的长度是无限的? CLOB? – DataNucleus 2012-03-03 09:08:53

回答

1

VARCHAR列类型未指定长度的不与SQL标准兼容。 JDO预计会设置一个。 H2似乎不允许你指定一个,但它似乎默认为max signed int,所以@Column(length = Integer.MAX_VALUE)将是正确的映射imho。

+0

我得出了同样的结论。 CLOB是一个解决方案,但它不能用作关键。 – JVerstry 2012-03-06 18:35:47

相关问题