如何解决如何在Kotlin中使用空白列表获取Spring Data Neo4jSDN进行初始化和可选关系收集?
使用SDN访问Kotlin中的Neo4j,我有一个实体,该实体具有仅用于从数据库读取的关系。看起来像这样:
@NodeEntity
class Parent() {
@Relationship(type = "CHILD_OF",direction = Relationship.INCOMING)
lateinit var children: List<Child>
...
我正在使用带有可选匹配项的自定义查询来检索这些对象。看起来像这样(实际查询更复杂,但这是有问题的部分):
MATCH (parent:Parent) WHERE ID(parent) IN $parentIds
OPTIONAL MATCH (parent)<-[r1:CHILD_OF]-(child:Child)
RETURN DISTINCT parent,child,r1
当查询返回与父级相关的子级时,它可以正常工作。但是,如果“父母”没有孩子,而我尝试访问parentObject.children
,则会得到:
kotlin.UninitializedPropertyAccessException: lateinit property children has not been initialized
我想发生的事情是,当查询没有返回任何相关的Child
实体时,children
字段应为空列表,而不是未设置。
我有办法告诉Cypher查询或SDN吗?
解决方法
可以通过在构造时为字段设置一个值来解决此 :
var children: List<Child> = emptyList() // Default value used when there's no children
不过,我更喜欢lateinit var
方法,因此,如果有一种方法可以使它起作用,我想知道它是什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。