Я использую JPA через Play Framework.
Я проверяю, кэшируется ли объект User, и если да, то извлекаю его и сливаю () так, чтобы я мог обновить поля исохраните изменения позже:
user = (User) Cache.get("user-auth-" + sessionAuthToken);
if (user != null) {
user = user.merge(); // I believe this is the same as EntityManager.merge()
}
Однако, когда я делаю это, я получаю следующую ошибку:
PersistenceException occured :
org.hibernate.exception.ConstraintViolationException:
could not insert: [models.User]
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.
MySQLIntegrityConstraintViolationException:
Duplicate entry '1235411688335416533' for key 'authToken'
Похоже, что он пытается вставить нового пользователя, хотя этот пользователь долженбыть, и уже в базе данных.Почему merge () делает это?
Или, возможно, я поступаю совершенно неправильно - совет будет принят.