关于spring集成hibernate获取session轮询取值错误
public class BaseDaoImpl<T, PK extends Serializable> extends
HibernateDaoSupport implements BaseDao<T, PK> {
public Class getEntityClass() {
return entityClass;
}
public void setEntityClass(Class entityClass) {
this.entityClass = entityClass;
}
// 获得泛型的实体对象
public BaseDaoImpl() {
Type type = getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
Type[] parameterizedType = ((ParameterizedType) type)
.getActualTypeArguments();
this.entityClass = (Class<T>) parameterizedType[0];
}
}
// 重写父类的方法
@Resource(name = "sessionFactory")
public void setBaseDaoSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
public synchronized T get(Object... cList) {
Criteria criteria =getSession().createCriteria(entityClass);
synchronized(criteria){
synchronized(cList){
for(Object c : cList) {
criteria.add((Criterion)c);
}
List resultList = criteria.list();
if(resultList.size()==0) {
return null;
} else {
return (T)resultList.get(0);
}
}
}
}
}
某方法调用
while(true){
A a = get(A.class,Restrictions.eq("id", "123"));
B b = get(B.class,Restrictions.eq("id", "456"));
if(a==null) {
System.out.println("A对象为空.");
}
}
控制台不定时的打印出"A对象为空.",但是这里查询a对象的条件是正常的,应该每次都能查询到数据的。感觉像是 criteria.add((Criterion)c);这里当时执行查询a对象的时候放入了id=456。希望高手解答下原因及解决参考。感谢