我看到 jOOQ 也在其元数据中添加了默认值:
public class Kampagne extends TableImpl<KampagneRecord> {
this.AKTIV = createField("AKTIV",
SQLDataType.VARCHAR(1).nullable(false)
.defaultValue(DSL.field("'J' ", SQLDataType.VARCHAR)),
this,
"die Kampagne ist aktiv, d.h. noch nicht abgeschlossen (markiert) resp. ist abgeschlossen (nicht markiert)",
new Varchar2ToBooleanConverter());
有没有办法在创建新记录时添加这些默认值?
这样测试就会成功吗?
KampagneRecord record = new KampagneRecord();
assertTrue(record.getAktiv();
您可能会问为什么我需要这个?我在 UI 中使用记录,并希望复选框已根据绑定到模型的记录设置为默认值。
目前尚未实施。为了获得正确的值,需要对多种可能的
DEFAULT
表达式进行评估(可能由数据库进行评估)。一个简单的情况是 CURRENT_TIMESTAMP
,它应该对应:
在您的特定情况下,它显然会起作用,因为它是一个常数,没有任何上下文歧义。 您可以扩展代码生成器并在记录中生成一些自定义代码部分(以及 POJO,如果您使用它们)。然后,该自定义代码部分将包含一个实例初始化程序,它将在每次构造函数调用时运行:
{
set(KAMPAGNE.AKTIV, true);
// Other default initialisations
}
或者,您可以使用解析器对
DataType.default_()
值进行逆向工程,并从 Param
中提取常量值(如果它是 Param
,或与 Param
兼容的内容,例如 CAST(1 AS INT)
) )