
Query query = session.createQuery("from _b b where b.name=?").setParameter(0, name)
//这里0表示第一个?的位置,name表示具体传入的值。
也可以这样
Object[] values = {"name"}//这里可以根据参数的个数自己调整。
String hql = "from _b b where b.name=?"
this.getHibernateTemplate().find(hql,vlaues)
//这样也能传入参数。
奇怪的东西的添加是因为hibernate是一个orm框架,在o即object和r即relationship之间的映射的时候,会进行转化。于是你在程序中提供的hql会转化为sql,这是个hibernate自动的过程,于是就会出现了你说的那些奇怪的东西。Hibernate:
select user0_.Id as Id0_,
user0_.USER_ID as USER2_0_,
user0_.USER_PASSWORD as USER3_0_,
user0_.USER_MOBNUM as USER4_0_,
user0_.USER_EMAIL as USER5_0_
from user user0_
where user0_.USER_ID=? and user0_.USER_PASSWORD=?
上述进行了格式化,你也可以在hibernate的配置文件中通过hibernate.show_sql和hibernate.format_sql两个属性来控制sql的打印输出。比较你所谓的奇怪的东西和hql简洁的本身,无非就是出来个select语句然后是一对列的别名。你要仔细看,无非就是你的一句from User的hql导致了select *的sql,而这个*在hibernate的sql中只不过把每一列都列出来了。
————————————————————————————————
再说你的异常。问题是“不能执行查询”出错位置是list()哪一行。什么原因?从你提供的代码和日志来看是看不到的。你需要把打印的日志往下拉一拉,一般有一句caused by,那后面会描述原因。一般原因就是User.hbm.xml或hibernate.cfg.xml(里面注册hbm.xml)的问题。
你好,这是hibernate动态传参的一种方式具体的意思是 and f.corptradedesc =:corptradedesc这句话的:后面corptradedesc是一个占位符
就是一个变量
这个变量是要赋值的
Query query=session.creatQuery(hql)
query.setParameter("corptradedesc"," 这里就是你要赋的值")
希望你能看懂 hibernate动态传参!
祝你好运
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)