Hibernate setParameter()未设置随HQL一起在java程序中提供的参数

Hibernate setParameter()未设置随HQL一起在java程序中提供的参数,hibernate,hql,Hibernate,Hql,下面是我的代码 String query="select w.statusCode,w.updateTime,s.statusCodeValue from WebsiteAvailability w,StatusCodes s where w.statusCode=s.statusCode and w.url=:sel"; String selUrl="www.google.com"; list=session.createQuery(query).setParameter("sel",selU

下面是我的代码

String query="select w.statusCode,w.updateTime,s.statusCodeValue from WebsiteAvailability w,StatusCodes s where w.statusCode=s.statusCode and w.url=:sel";
String selUrl="www.google.com";
list=session.createQuery(query).setParameter("sel",selUrl).list();
问题出在我的HQL查询中的where条件w.url=?正在使用。我在服务器日志中检查了它,它正在使用吗?而不是selUrl值。请帮助我。这里我使用hibernate,所以我使用实体、属性而不是表、列名。
谢谢。

您的代码不包含任何错误。它应该会起作用。传递参数的其他方式如下所示:

String query="select w.statusCode,w.updateTime,s.statusCodeValue from WebsiteAvailability w,StatusCodes s where w.statusCode=s.statusCode and w.url= ?";
String selUrl="www.google.com";
list=session.createQuery(query).setString(0,selUrl).list();

你能再坐飞机吗。。我不能理解。。?是一个占位符,在运行时将被hibernate替换。也许你应该多解释一下你的问题。在运行我的代码之后,在这里?未被我提供的selUrl参数替换。例如,如果我在运行代码时给出字符串selUrl=“”?应该被selUrl字符串替换,对吗?但这需要多少时间?这是我的问题你在看生成的SQL吗?在sql日志中,通常不会看到实际的参数值,只会看到它们的占位符。要查看实际传递的参数,请在“跟踪”级别激活日志库(例如log4j)中的“org.hibernate.type”日志。请注意,这会生成大量日志。