HibernateException:在SELECT上找到对集合的共享引用

时间:2014-02-10 15:09:28

标签: java multithreading hibernate

我收到此警告(HibernateException: Found shared references to a collection),但有时候并不总是像其他线程一样。另一件有趣的事情是我只在db上执行SELECT,根本没有插入,在我的整个项目中都没有。

我的数据库结构很简单:

======        ===========
user          criteria
------        -----------
id     -----> user_id
name          id
...           keywords
======        ...
              ===========

我的方法如下:

private synchronized ArrayList<AutomailingCriteria> getUserCriteria(Integer uid){

        this.session.beginTransaction();
        Query query = this.session.createQuery("from AutomailingCriteria where user.id = :uid");
        query.setParameter("uid", uid);


        ArrayList<AutomailingCriteria> result = new ArrayList<>(query.list());

        if(!this.session.getTransaction().wasCommitted()){
           this.session.getTransaction().commit();        
        }
        return result;
    }

并由4个线程同步调用。

0 个答案:

没有答案