Query query = getSession().createQuery(
"from com.rj0812.bean.TNewscol where ? = ?");
query.setString(0,type);
query.setString(1,textcontent);这也行不?我在上面测试了这两个值都传过来了,并且type的值与数据库的字段名称也一样,为什么就是不行呢?

解决方案 »

  1.   

    where ? = ?,这么的不行吧!哪有这样用的~
      

  2.   

    “type的值与数据库的字段名称也一样”?
    不是要跟com.rj0812.bean.TNewscol的成员变量一样么..
      

  3.   

    那个where条件直接写到外面来啊。“ ?=?”这也太牛了..
      

  4.   


    String sql = "from TNewscol " + " where "+type+" = '"+textcontent+"'";这样行了吧!
      

  5.   

    你这是HQL吧? 怎么能用数据库的字段名称 要用实体对象的属性呀 如果你起的名字一样 当我没说
    你把hibernate的配置 SHOW SQL 打开
    看看执行时后台的 SQL就知道了
      

  6.   

    String sql = "from TNewscol " + " where "+type+" = '"+textcontent+"'";
      

  7.   

    先用string.format吧字符串格式一下,如果用字符串加等号连接,有可能会出现乱码问题,建议用string.format格式化字符串,之后在放入createQuery中
      

  8.   


    from com.rj0812.bean.TNewscol where "+type+" = ?");query.setString(0,textcontent);
      

  9.   

    不能?=?
    这样写是不对的无法翻译SQL JDBC也是不支持的
    你想把第一个?设置成整形ne?还是  -------这显然不行吗!!要做到这种效果 直接用SQL拼接不就完了吗?
      

  10.   

    你可以先组装HQL字符串,然后再赋值。
      

  11.   

    当然有问题了等号的左边是没有单引号的,这样传不就是比较'type(变量的值)'与'textcontent(变量的值)‘
    两个字符串的是否相等吗,而不是列名='与'textcontent(变量的值)'。