我有数据类
data class Author(
val id: String,
val name: String,
val books: MutableList<Book> = mutableListOf()
) {}
我用jooq写了请求
val resultSet = dsl.select(author.ID, author.NAME,
field(select(jsonArrayAgg(jsonObject(book.ID, book.PRICE)))
.from(books)
.where(book.AUTHOR_ID.eq(author.ID))
).`as`("books"))
.from(authors)
.fetchInto(Author::class.java)
但我有一个例外,若作者并没有书。这是合乎逻辑的,因为数据类Author中的外业手簿不可为空。我试图将伴生对象添加到数据类中
companion object {
operator fun invoke(
id: String,
name: String,
books: MutableList<Book>? = null
) = Author(id, name, books ?: mutableListOf())
}
但是它不起作用,jooq仍然尝试使用默认构造函数,我得到了一个异常。有没有办法在不使数据类中的字段书作者为空的情况下修复它?
原因是JSON_ARRAYAGG()
(与大多数聚合函数一样)为空集生成NULL
,而不是更“合理”的空[]
。显然,你永远不会想要这种行为。因此,您可以使用合并
,另请参见以下问题:
coalesce(
jsonArrayAgg(jsonObject(book.ID, book.PRICE)),
jsonArray()
)
我将确保更新我在堆栈溢出问题上给出的所有其他答案,以指出这一点。如果存在合理的聚合标识(例如,[]
),未来的jOOQ版本可能会提供NULL
安全聚合函数,以使其更易于发现:https://github.com/jOOQ/jOOQ/issues/11994
我在解析后通过检索表单数据来填充 我希望检查从表单中获得的字段是否为空,如果是空,则通过调用函数填充它,如果不是,则使用检索到的值填充它(invitecode:if newuser.invitecode==“”{“mr”}else{lnames.title},)。我知道go没有一个tenary运算符,我想要使用这个运算符,阅读这里的问题,这里的问题,这里的问题,这里的问题意味着使用一个if els
问题内容: 我正在尝试使用Jackson将一些JSON对象映射到Java对象。JSON对象中的某些字段是必填字段(可以用标记),而某些字段是可选字段。 用Jackson映射之后,在JSON对象中未设置的所有字段在Java中都将具有空值。是否有类似的注释可以告诉Jackson为Java类成员设置默认值(如果为null)? 编辑:为了使问题更清楚,这里是一些代码示例。 Java对象: JSON对象可以
我正在尝试用Jackson将一些JSON对象映射到Java对象。JSON对象中的一些字段是强制性的(我可以用标记),而一些字段是可选的。 在与Jackson进行映射之后,JSON对象中没有设置的所有字段在Java中都将有一个空值。是否有类似于的注释可以告诉Jackson为Java类成员设置默认值,以防它为空? 或: 注释只是为了显示我的要求。这不是真正的注解。如果JSON对象与第一个示例类似,我希
查看图像以供参考。 我是Java的初学者。
问题内容: 我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的架构,如下所示: data.avsc: 我正在使用 avro-maven-plugin v1.7.6 生成Java模型。 当我使用:创建模型的实例时 ,它会失败并出现以下异常: org.apache.avro.AvroRuntimeException:org.apache.avro.AvroRuntimeException:字
我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的模式,如下所示: 数据avsc: 我使用的是avro maven插件v1。7.6生成Java模型。 当我使用:创建模型的实例时,它会失败,但有一个异常: org.apache.avro.AvroRuntimeExc0019:org.apache.avro.AvroRuntimeExc0019:字段id类型: UNION pos: 0未设置