实例化新记录时应用默认值

时间:2019-05-23 11:23:19

标签: java jooq

我看到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();

您可能会问为什么我需要这个?我在用户界面中使用记录,并希望复选框已基于绑定到模型的记录设置为默认值。

1 个答案:

答案 0 :(得分:1)

当前未实现。为了获得正确的值,可能需要数据库评估各种可能的DEFAULT表达式。一个简单的例子是CURRENT_TIMESTAMP,它应该对应于:

  1. 到服务器(数据库)时间,而不是客户端时间
  2. 到实际创建记录的时间,而不是客户创建客户记录模型的前一刻。

在您的特定情况下,它显然是可行的,因为它是一个常量,没有任何上下文歧义。 You could extend the code generator and generate some custom code sections in records(和POJO(如果使用它们))。然后,该自定义代码部分将包含一个实例初始化程序,它将与每个构造函数调用一起运行:

{
    set(KAMPAGNE.AKTIV, true);
    // Other default initialisations
}