Я использую spring-data-jpa, и у меня есть объект со следующим кодом:
@Id
@GeneratedValue
@Column(columnDefinition = "uuid")
private UUID id;
@Basic(optional = false)
@Column(updatable = false)
private long creationTimestamp;
...
Я использую org.springframework.data.jpa.repository.JpaRepository для выполнения соответствующих операций CRUD. .
Когда я сначала сохраняю сущность (например, creationTimestamp = 1), метод save (entity) возвращает сохраненную сущность (как говорит javado c) с новым id для дальнейших операций (как говорит javado c) и с полем creationTimestamp = 1 .
Но позже, если я попытаюсь обновить эту сущность с помощью new creationTimestamp (например, creationTimestamp = 2), снова с методом save (entity) , этот метод возвращает объект с полем creationTimestamp = 2 (который является не правильно).
Если я выполняю поиск по методу findById (данное_ид) , возвращаемая сущность имеет поле creationTimestamp = 1 , что является правильным, поскольку столбец был определяется как updatable = false .
Очередь Дело в том, почему при обновлении метод save (entity) возвращает новое значение в creationTimestamp вместо того, которое находится в базе данных? Потому что я ожидаю «спасенную сущность» (как говорит джавадо c).