以前都是用ORACL 现在有需要转用Sqlserve 2000,
突然间发现使用 Sqlserve 2000 进行查询,会出现这样的情况 不知道大家有没遇见过,或许会有解决办法
public List DeptUser(Integer deptid)
{
Session ss= null;
List l = null ;
try {
ss = DBcon.getSession("hibernate_connection_factory");
String hql = "FROM DeptUser as s WHERE s.deptID="+deptid+"" ;
Query q = ss.createQuery(hql) ;
l = q.list() ;
}catch(Exception e) {
e.printStackTrace();
}finally{
if (ss != null) {
ss.close();
}
}
return l ;
}
比如说这样一个方法 ,查询表DeptUser 并把符合要求的值存入List,但是奇怪的现象出现了,存入List的数据始终只有第一条
假如有10条符合要求的数据,List.size()确实是10没错,但是每条数据都是第一条,好像是游标没往下走
请问大家遇见过这样的情况嘛,解决办法是??
网上有说是驱动的问题 我用的是com.microsoft.jdbc.sqlserver.SQLServerDriver 或者改成JTDS的驱动也不行 是不是需要加什么配置?
请大家帮帮忙 急需!!!!
------解决方案--------------------
你用的hibernate,看看hibernate有问题没哦。
------解决方案--------------------
比较郁闷呢
ss = DBcon.getSession("hibernate_connection_factory");
获得session的方法怎么还带参数
有些ide不是自动能创建session的工厂方法.调用就可以了
我试了的怎么可以呢?
------解决方案--------------------
取值的代码呢,拿出来看看。 看你hibernate查询部分代码都挺正常的
------解决方案--------------------
FROM DeptUser as s WHERE s.deptID="+deptid+;
传换为标准sql在在客户端查查看看,看看你的sql语句正确与否。
------解决方案--------------------
------解决方案--------------------
<property name="show_sql">true</property>
把SQL打印出来在查询分析器里看看。。。
------解决方案--------------------
String hql = "FROM DeptUser as s WHERE s.deptID="+deptid+"" ;
Query q = ss.createQuery(hql) ;
如果deptID是 varchar的话
String hql = "FROM DeptUser as s WHERE s.deptID='"+deptid+"'" ;
-----
或者你这样试试---
String hql = "FROM DeptUser as s WHERE s.deptID=:deptid" ;
Query q = ss.createQuery(hql) ;
q.setParameter("deptid", deptid)
l = q.list() ;
---------如果这样都不行的话..
我怀疑是你查出来后取值的问题了!
------解决方案--------------------
这样看来是没有错了,照楼主说的,list.size()=10;
应该是你取值的问题,有一次我同学在取值的时候把while()写成了if()
楼主好好检查下,应该是取值的问题。
------解决方案--------------------
第三,在服务端打印的每条list的唯一值确实是一样的
每条记录的唯一值都一样,看来是存入list时出了问题(唯一值不一样才是对的)
不明白为什么了。。。
------解决方案--------------------
可能:
obj =new Obj();
while(...){
obj=...
list.add(obj);
}
list 有n个一样的