0
对不起,我是问常见问题 我得到异常下面当两个Web服务调用同样的方法,每次调用方法isUserValid()。用户验证返回true,但仍然得到异常。为什么只有在第二次调用时抛出异常,我在第一次结束之前调用第二次Web服务。 有没有办法既WS调用分别执行。Web服务调用:行被其它事务更新或删除(或者未保存值的映射是不正确的)
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.dmainc.commons.security.User#4]
问题方法 -
public UpdateFileRequest getUpdateFragment(UpdateFilter filter)
{
Session session = null;
Transaction transaction = null;
UpdateFileRequest request = new UpdateFileRequest();
UpdateFragmentReleaseFilter releaseFilter = null;
try
{
session = HibernateUtils.currentSession();
transaction = session.beginTransaction();
releaseFilter = new UpdateFragmentReleaseFilter(filter);
// are the user credentials valid
if(ServiceUtils.isUserValid(releaseFilter))
{
//Getting exception at this place while committing the transacation
HibernateUtils.commit(transaction);
}
currentSession方法
public static Session currentSession() throws HibernateException {
Session s = session.get();
if(s != null)
s = validateSession(s);
// Open a new Session, if this Thread has none yet
if (s == null) {
if (log.isDebugEnabled())
log.debug("Opening new session");
s = session_factory.openSession();
session.set(s);
new_session.set(Boolean.TRUE);
} else if (!isNewSession()) {
new_session.set(Boolean.FALSE);
}
return s;
}
确定ServiceUtils.isUserValid(releaseFilter)仅在数据库中读取信息,并不会改变什么吗?你可以附上ServiceUtils.isUserValid(releaseFilter)的代码吗? –
@JohnDonn,在allwing show sql之后,我发现它实际上是在修改用户表,这就是为什么它抛出异常。 actully及其更新登录时间戳(passwordAttemptDate)和相同的时间的其他线程正在特林修改/提交。这种操作在两个不同的事务,不要knwo如何限制用户对象,我加入这导致了问题件。 – Surya
我已通过删除用户对象中的版本字段解决了此问题。 – Surya