У меня есть структура, которая (упрощенно) выглядит так:
@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>
Теперь, когда я сохраняю два связанных объекта FullEntity
независимо друг от друга, все работает, если я делаю это одним способом:
entityRepository.save(FullEntity().apply {
uuid = "uuid1"
someMoreData = "SomeMoreData1"
target = StubEntity().apply {
uuid = "uuid2"
}
})
// some time later ...
entityRepository.save(FullEntity().apply {
uuid = "uuid2"
someMoreData = "SomeMoreData2"
})
но если я изменю порядок так:
entityRepository.save(FullEntity().apply {
uuid = "uuid2"
someMoreData = "SomeMoreData2"
})
// some time later ...
entityRepository.save(FullEntity().apply {
uuid = "uuid1"
someMoreData = "SomeMoreData1"
target = StubEntity().apply {
uuid = "uuid2"
}
})
он удаляет "SomeMoreData2"
.
Entity
. Но вы также можете помочь мне понять ваш вариант использования: почему вы определяете несколько полейId
? - person meistermeier   schedule 07.02.2018uuid
._id
— это внутренний идентификатор в базе данных Neo, который я нигде не использую. - person MaciejGórski   schedule 07.02.2018