Java 实例化新记录时应用默认值
我看到jOOQ也在向其元数据添加默认值:Java 实例化新记录时应用默认值,java,jooq,Java,Jooq,我看到jOOQ也在向其元数据添加默认值: public class Kampagne extends TableImpl<KampagneRecord> { this.AKTIV = createField("AKTIV", SQLDataType.VARCHAR(1).nullable(false) .defaultValue(DSL.field("'J' ", SQLDataType.VARCHAR)),
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());
你可能会问我为什么需要这个?我在UI中使用该记录,并希望根据绑定到模型的记录将复选框设置为默认值。这目前未实现。有多种可能的
DEFAULT
表达式需要计算,可能是由数据库计算,以获得正确的值。一个简单的例子是CURRENT\u TIMESTAMP
,它应该对应:
{
set(KAMPAGNE.AKTIV,true);
//其他默认初始化
}
我明白了。我将继续阅读有关代码生成器的内容。谢谢@西蒙马蒂内利:我很想看到这一点。如果它对你有用,你可以把它发布在Github或你的博客上?@SimonMartinelli:我刚刚想到另一件事。所有默认表达式都是表达式。也许我们可以提供一个功能,让您可以轻松运行包含这些表达式的SELECT
语句,生成记录,而不是自己创建记录。这需要额外的服务器往返,但会更加健壮。如果我能为我的问题找到解决方案,我一定会写下来。是的,如果我们得到一个填充的记录,服务器往返不会是一个问题。实际上,我们可以检测到是否需要服务器往返。如果所有默认值都是常量,那么我们可以避免它,这将使它成为一个非常好的特性。我已为此创建了一个功能请求:
KampagneRecord record = new KampagneRecord();
assertTrue(record.getAktiv();