0
У меня есть несколько методов, которые возвращают данные с помощью GORM и обновляются и сохраняются. Выбрасываются следующие ошибки.Grails/Hibernate: DuplicateKeyException и NonUniqueObjectException
2017-02-14 01:39:02,316 [ERROR ] A different object with the same identifier value was already associated with the session : [com.example.Job#3365090]; nested exception is org.hibern$
org.springframework.dao.DuplicateKeyException: A different object with the same identifier value was already associated with the session : [com.example.Job#3365090]; nested exception is org.hibernate.Non$
at com.example.job.JobDaoService.$tt__persistJob(JobDaoService.groovy:88)
at com.example.job.JobDaoService.$tt__changeJobStatusByJob(JobDaoService.groovy:225)
...
Caused by: org.hibernate.NonUniqueObjectException: A different object with the same identifier value was already associated with the session : [com.example.Job#3365090]
... 23 more
Мои методы: (1)
Job persistJob(Job job) throws JobException {
job.save(flush: true)
if (job.hasErrors()) {
throw new JobException("Error (ID: ${job?.id}). Details: ${job.errors}", JOB_CANNOT_BE_CREATED_EXCEPTION)
}
return job
}
(2)
@Synchronized
Job changeStatusByJob(Job job, JobStatus jobStatus) {
job.refresh()
job.status = jobStatus
if (persistJob(job)) {
log.info("The status is changed.")
}
return job
}
(3)
@Transactional
Job getPendingJob() throws JobException {
return Job.findByStatusAndCreatedLessThanEquals(READY, new Date(), [sort: "type"])
}
Я добавил @Transactional
, job.attach()
, job.refresh()
и ничего не работало.
Как выглядит работа? Любые двунаправленные отношения? И они с нетерпением ждали? – Hoof
Да. Он имеет двунаправленные отношения и с нетерпением загруженные данные, но не обновляется до сохранения работы. Я просто прочитал значения таблицы отношений. –
Ну. Если существует такое отношение, это, скорее всего, причина исключения неспецифического объекта, так как объект загружается дважды в сеансе ... – Hoof