如何创建未知大小的JDO DataNucleus密钥字符串字段?

时间:2012-03-02 21:14:48

标签: java mysql string datanucleus

我在MySQL模式下打开的H2数据库实例上使用DataNucleus的JDO实现。

我需要在表格中创建由三个字符串组成的项目。最后一个字符串可以是任何长度。我创建了以下对象,除了大于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第3个字段是任何长度的字符串?我应该使用哪种SQL类型?我该如何申报?感谢。

1 个答案:

答案 0 :(得分:1)

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