因为HQL是事先动态生成并传入专门的方法中查询的,所以查询参数都一律写在了HQL里,由于某个字符串类型的参数值带有冒号:所以被当作是一个参数占位符了,导致执行时出错。请问如何解决呢?或者Hibernate中有无提供一些方法转义冒号成为普通字符串处理?

解决方案 »

  1.   

    在SQL中可以用引号引起来,HQL没试过,不知道。
      

  2.   

    我不知道有没有转义字符,不过你也可以先这个参数值先在HQL中定义为?,再调用setString这样转递冒号作为值。虽然有点麻烦,但是在你的DAO类中处理一下就可以了
      

  3.   

    写反啦
    ike '%商品/:模板%'   
      

  4.   

    谢谢了哈!!之前没来得及看回复,急着用,就改用其他方法来做了,明天再试一下了warison2008的方法了,谢谢大家^_^!!
      

  5.   

    参数这样写":name",再用query.setString("name","value");
      

  6.   

    参数这样写"\\::name",再用query.setString("name","value");