关于spring集成hibernate获取session轮询取值错误

cvbnfghty 2014-12-19 02:33:56
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。希望高手解答下原因及解决参考。感谢
...全文
582 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dokia123 2015-02-28
  • 打赏
  • 举报
回复
你把hibernate的查询语句打印出来,看看显示“A对象为空”的时候查询语句有问题没
cvbnfghty 2015-02-26
  • 打赏
  • 举报
回复
有回复的分全给了!!
cvbnfghty 2015-02-25
  • 打赏
  • 举报
回复
没回答的怎么给分?

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧