默认值的Ormlite列



我有一个未定义的默认值:

@DatabaseField(dataType = DataType.TIME_STAMP, columnDefinition = "DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL") private Date createdDate;

尝试使用createdDate字段unset保存一行时,我会收到以下错误:

[SQLITE_CONSTRAINT_NOTNULL] A NOT NULL constraint failed (NOT NULL constraint failed:

Ormlite可能正在尝试将NULL值明确插入字段。将persisted = false添加到注释中可以避免这种情况,但是在表创建上未创建列。

有没有一种方法来创建列,但是还告诉ormlite忽略插入的该列吗?

有没有一种方法来创建列,但也告诉ormlite忽略插入上的该列?

您缺少的是@DatabaseFieldreadOnly = true设置。引用javadocs:

如果此字段是仅读取字段,则将其设置为true(默认为false(。该字段将通过查询返回,但是在插入/创建语句中将忽略它。[只是添加:]这可以用来表示创建或修改日期,并由数据库生成的值。

我只使用了以下字段定义(至少使用H2(,并且效果很好:

@DatabaseField(columnDefinition = "DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL",
    readOnly = true, canBeNull = false)
private Date createdDate;

您不需要指定dataType,如果这样做,您相信您的字段应该是Timestamp类型。顺便说一句,我刚刚纠正的在线文档中缺少此功能。

相关内容

  • 没有找到相关文章

最新更新