Skip to content

Commit 4b41763

Browse files
committed
Add note about version field for provided ids.
1 parent 7e7345f commit 4b41763

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/main/asciidoc/object-mapping/mapping.adoc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ The second operation will fail with a `OptimisticLockingFailureException` becaus
185185
that does not exist anymore in the database.
186186
In such cases the operation needs to get retried, beginning with a fresh fetch of the object with the current version from the database.
187187

188+
The `@Version` attribute is also mandatory if <<mapping.id-handling.business-key, business ids>> are used.
189+
Spring Data Neo4j will check this field to determine if the entity is new or has already been persisted before.
190+
188191
[[mapping.annotations.property]]
189192
=== Mapping properties: `@Property`
190193

@@ -479,7 +482,11 @@ The name of the person is assigned at construction time, both by your applicatio
479482
This is only possible, if you find a stable, unique business key, but makes great immutable domain objects.
480483

481484
* Advantages: Using a business or natural key as primary key is natural.
482-
The entity in question is clearly identified and it feels most of the time just right in the further modelling of your domain.
485+
The entity in question is clearly identified, and it feels most of the time just right in the further modelling of your domain.
483486
* Disadvantages: Business keys as primary keys will be hard to update once you realise that the key you found is not as stable as you thought.
484487
Often it turns out that it can change, even when promised otherwise.
485488
Apart from that, finding identifier that are truly unique for a thing is hard.
489+
490+
Please keep in mind that a business key is always set on the domain entity before Spring Data Neo4j processes it.
491+
This means that it cannot determine if the entity was new or not (it always assumes that the entity is new),
492+
unless also a <<mapping.annotations.version, `@Version` field>> is provided.

0 commit comments

Comments
 (0)