String hql="from Music music where music.musicUpLoader=?"; 这个改成 String hql="from Music music where music.musicUpLoader like '%"+musicUpLoader+"%'"; query.setString(0, musicUpLoader);这个去掉...不过这个搜索会全表查询,不推荐,主要看能不能实现功能 还有 Query query = session.createQuery(hql); query.setString(0, musicUpLoader); 这个顺序是不是倒了,先搜索,再添加条件,因为这样添加参数我没用过,不知道是不是这样
这个改成
String hql="from Music music where music.musicUpLoader like '%"+musicUpLoader+"%'";
query.setString(0, musicUpLoader);这个去掉...不过这个搜索会全表查询,不推荐,主要看能不能实现功能
还有 Query query = session.createQuery(hql);
query.setString(0, musicUpLoader);
这个顺序是不是倒了,先搜索,再添加条件,因为这样添加参数我没用过,不知道是不是这样
query.setString(0, musicUpLoader);这两句顺序反了吧?
除非在query.setString(0, musicUpLoader);里面的musicUpLoader设置成具体值才能查出结果来。。或者 musicUpLoader 这个参数传过来的时候就是空的?断点调试了吗?query.setString(0, musicUpLoader);
改成 query.setParameter(0, musicUpLoader);
楼主先DEBUG 跟踪看你查询参数是否有问题
实在不行就不要用占位符 直接拼接HQL参数
musicUpLoader 传过来是空的。。但是数据库里有值,
打印出的sql语句也没问题。放数据库可以查到的。。但是在这个里面就没查到东西。。
引用 6 楼 shouhu5670 的回复:
引用 2 楼 jerry_bj 的回复:
Query query = session.createQuery(hql);
query.setString(0, musicUpLoader);这两句顺序反了吧?
除非在query.setString(0, musicUpLoader);里面的musicUpLoader设置成具体值才能查出结……
[/Quote
貌似问题的原因不是这段,你要好好看下public List<Music> selMusicup(String musicUpLoader) {
调用这个函数的地方,传入的参数musicUpLoader这个值
我给你改写了一下,看是否合你心意:
//我的上传
@SuppressWarnings("unchecked")
public List<Music> selMusicup(String musicUpLoader) {
Session session=getSession();
Query query=null;
String hql="from Music music where 1=1";
if(musicUpLoader!=null&&!musicUpLoader.trim().equals("")){
hql+="and music.musicUpLoader=?";
query = session.createQuery(hql);
query.setString(0, musicUpLoader);
}else{
query = session.createQuery(hql);
}
return query.list();
}
}
我原来的。
musicList=musicService.selMusicup(musicUpLoader);改正确的。
musicList=musicService.selMusicup(music.getMusicUpLoader());唉小弟培训班学java学了半年。。毕业设计要做这个。一个不懂得要卡好几天。。诸位辛苦了、、、感谢感谢感谢。。再三感谢。
哦对了要结贴不??