我在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类型?我该如何申报?感谢。
答案 0 :(得分:1)
未指定长度的VARCHAR列类型与SQL标准不兼容。 JDO期望设置一个。 H2似乎允许你不要指定一个,但它似乎默认为max signed int,所以@Column(length = Integer.MAX_VALUE)将是正确的映射imho。