2016-09-26 17 views
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; 
} 
+0

确定ServiceUtils.isUserValid(releaseFilter)仅在数据库中读取信息,并不会改变什么吗?你可以附上ServiceUtils.isUserValid(releaseFilter)的代码吗? –

+0

@JohnDonn,在allwing show sql之后,我发现它实际上是在修改用户表,这就是为什么它抛出异常。 actully及其更新登录时间戳(passwordAttemptDate)和相同的时间的其他线程正在特林修改/提交。这种操作在两个不同的事务,不要knwo如何限制用户对象,我加入这导致了问题件。 – Surya

+0

我已通过删除用户对象中的版本字段解决了此问题。 – Surya

回答

0

我已经能够利用正在进行的会话的每个Web服务调用inspite创造新的会议上解决这个问题。

相关问题