我有以下结构表:
CustomerId
PaymentDate
PK (CustomerId+PaymentDate)
系统插入一个名为PaymetnDate的软日期,它反映了需要付款的日期。
由于停工时间有时,PaymentDate系统无法到达,付款完成后需要更新paymentDate。
为此,我们正在做:
//请注意,每个客户只有一行。 primaryKey中的PaymentDate归因于遗留。我们计划将其删除。
function deleteAndInsert
final Criteria criteria = session.createCriteria(ClassName.class);
criteria.add(Restrictions.eq(CUSTOMER_ID, customerId));
final ClassName result = (ClassName) criteria.uniqueResult();
if(result != null) {
session.delete(result);
}
session.save(newObject);
session.flush();
session.evict(ClassName)
如果deleteAndInsert调用一次,它就完美了。 如果功能在短时间内被称为两次,则无效。可能是什么问题?
第二次调用函数获取主键错误。在重试时会自动解决。
我认为结果缓存导致了这个问题。但不确定