Получение "отделенной сущности, переданной для сохранения" при попытке обновить сущность
Я пытаюсь обновить объект. В рамках этого процесса я загружаю старую из базы данных и "передаю" значения ее свойств новому объекту.
Но когда я пытаюсь сохранить новый объект, я получаю следующую ошибку:
org.hibernate.PersistentObjectException: detached entity passed to persist: some.package.domain.Exercise
Моя сущность выглядит следующим образом
@Entity
class Exercise(
val name: String,
val description: String,
@JsonIgnore
@ManyToOne
val creator: User,
@OneToMany(fetch = EAGER)
@Fetch(SUBSELECT)
val videos: MutableList<Video> = mutableListOf(),
@Id
@GeneratedValue(strategy = SEQUENCE)
val id: Long = 0
)
Мой код для сохранения выглядит следующим образом
@Singleton
@Transactional
class ExerciseServiceDefault(override val repository: ExerciseRepository,
private val entityManager: EntityManager) : ExerciseService {
override fun update(id: Long, exercise: Exercise): Exercise {
val existing = get(id)
val new = Exercise(exercise.name, exercise.description, existing.creator, existing.videos, existing.pictures, id)
return repository.save(new)
// return entityManager.merge(new)
}
...
Если я изменю приведенный выше код, чтобы использовать entityManager.merge(new)
все работает нормально. Но я бы предпочел не вводитьentityManager
.
Любая подсказка о том, как я могу сделать обновление, используя мой repository
?
Я пробовал добавить cascade = [MERGE]
к моим отношениям безрезультатно.