I have a structure, which (simplified) looks like this:
@NodeEntity(label = "Entity")
class FullEntity {
@Id @GeneratedValue
var _id: Long? = null
@Id @Index(unique = true)
lateinit var uuid: String
lateinit var someMoreData: String // this data is sometimes lost
@Relationship(type = "TARGETS", direction = Relationship.OUTGOING)
var target: StubEntity? = null
}
@NodeEntity(label = "Entity")
class StubEntity {
@Id @GeneratedValue
var _id: Long? = null
@Id @Index(unique = true)
lateinit var uuid: String
}
@RepositoryRestResource
interface EntityRepository : Neo4jRepository<FullEntity, Long>
Now when I save two related FullEntity
objects independently, it all works if I do it one way:
entityRepository.save(FullEntity().apply {
uuid = "uuid1"
someMoreData = "SomeMoreData1"
target = StubEntity().apply {
uuid = "uuid2"
}
})
// some time later ...
entityRepository.save(FullEntity().apply {
uuid = "uuid2"
someMoreData = "SomeMoreData2"
})
but if I reverse the order like so:
entityRepository.save(FullEntity().apply {
uuid = "uuid2"
someMoreData = "SomeMoreData2"
})
// some time later ...
entityRepository.save(FullEntity().apply {
uuid = "uuid1"
someMoreData = "SomeMoreData1"
target = StubEntity().apply {
uuid = "uuid2"
}
})
it removes "SomeMoreData2"
.