有没有办法让我知道分离的实体是否在会话缓存中。我有以下情况。
public void method (Entity entityObject)
{
//List Associated objects and do some process
Criteria criteria = session.createCriteria(GroupMembers.class);
criteria.add(Restrictions.eq("group", group));
criteria.createCriteria("group", "group", JoinType.LEFT_OUTER_JOIN);
List<GroupMembers> members = (List<GroupMembers>) criteria.list();
...
entityObject= (Entity) session.merge(entityObject);
if (SomeCondition){
session.delete(entityObject);
}
}
除了以下场景外,大部分时间都可以正常工作。其中entityObject被另一个事务删除的地方。我想要的是session.delete(entityObject)失败,因为entityObject已被删除。但是,由于session.merge(entityObject),如果在缓存或数据库中找不到实体,则会将记录插入到数据库中,因此删除总是成功。
更新。 这有效,但我在开始时做了额外的选择......这是一个好方法吗?
public void method (Entity entityObject)
{
Entity entityObjectCopy = session.get(Entity.class, entityObject.getId())
if(entityObjectCopy == null)
{
//List Associated objects and do some process
Criteria criteria = session.createCriteria(GroupMembers.class);
criteria.add(Restrictions.eq("group", group));
criteria.createCriteria("group", "group", JoinType.LEFT_OUTER_JOIN);
List<GroupMembers> members = (List<GroupMembers>) criteria.list();
...
entityObject= (Entity) session.merge(entityObject);
}
if (SomeCondition){
session.delete(entityObject);
}
}