我在HQL语句中绑定了命名参数,但只是没有被填充。
//colname = "AdminsInfo.name"; assume it is from method's input //colval = input.getName().toString(); // assume it is from method's input String query = "from AdminsInfo where :coln = :colv"; Query q = session.createQuery(query); q.setParameter("coln",colname); q.setParameter("colv",colval); System.out.println(q.toString());
它输出类似这样的内容,这意味着未设置参数(coln,colv)并返回0条记录。
QueryImpl(from AdminsInfo where :coln = :colv) Hibernate: select adminsinfo0_.Row as Row1_0_, adminsinfo0_.ID as ID2_0_,adminsinfo0_.Name as Name3_0_, ... where ?=?
感谢您提供有关如何在HQL语句中绑定列名称的任何帮助。谢谢。马赫迪。
您不能将列名称绑定为参数。仅一列值。在绑定参数值和执行查询之前,在计算执行计划时必须知道该名称。如果您确实希望拥有这样的动态查询,请使用Criteria API或其他动态创建查询的方式。