Spring Data Neo4j 5: поле @Version неожиданно увеличивается при обновлении родительского узла - PullRequest
0 голосов
/ 29 мая 2019

Я использую Spring Data Neo4j (5.1.8.RELEASE).

Допустим, у меня есть простой узел, содержащий простые отношения.

Если я создаю простую сущность1 ссвязь с entity2, а затем обновить только entity1, я ожидаю, что только поле версии entity1 увеличивается.Удивительно, но кажется, что версия отношений также увеличивается.Это поведение задумано или это ошибка?

@NodeEntity
class TestEntity(

    var content: String,

    @Relationship(direction = OUTGOING)
    var relationships: MutableList<TestRelationship>? = null

 ) : AbstractEntity() {

     fun addRelationship(testEntity: TestEntity) {
        if (relationships == null) {
            relationships = mutableListOf(TestRelationship(this, testEntity))
        } else {
            relationships?.add(TestRelationship(this, testEntity))
        }
    }

 }


@RelationshipEntity
class TestRelationship(

    @StartNode
    var startNode: TestEntity,

    @EndNode
    var endNode: TestEntity

) : AbstractEntity()


abstract class AbstractEntity {

    @Id
    @GeneratedValue(strategy = UuidStrategy::class)
    var id: String? = null

    @Version
    var version: Long? = null

    @LastModifiedBy
    var updatedBy: String? = null

    @LastModifiedDate
    var updatedTime: Instant? = null

}


@Test
@DisplayName("Test entity version")
fun testEntityVersion() {

    // Given
    val entity1 = TestEntity("Test1")
    val entity2 = TestEntity("Test2")
    entity1.addRelationship(entity2)
    repository.save(entity1)

    // When
    entity1.content = "Test1 (updated)"
    repository.save(entity1)

    // Then
    Assertions.assertThat(entity1.version).isEqualTo(1) // ok
    Assertions.assertThat(entity1.relationships!![0].version).isEqualTo(0) // fails!! expecting 0 but actual value is 1
    Assertions.assertThat(entity2.version).isEqualTo(0) // ok
}
...