В оригинальном сообщении есть два метода, update(obj)
и merge(obj)
, которые упоминаются как работающие, но в противоположных обстоятельствах. Если это действительно так, то почему бы не проверить, находится ли объект сначала в сеансе, а затем вызвать update(obj)
, если это так, иначе вызвать merge(obj)
.
Тест на существование в сеансе session.contains(obj)
. Поэтому я думаю, что будет работать следующий псевдокод:
if (session.contains(obj))
{
session.update(obj);
}
else
{
session.merge(obj);
}