我收到此警告(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个线程同步调用。