当前位置: 首页 > 面试题库 >

Hibernate列名称参数绑定

朱建弼
2023-03-14
问题内容

我在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或其他动态创建查询的方式。



 类似资料:
  • 问题内容: @Column(name=”DateOfBirth”) private Date dateOfBirth; 我特别需要上面的代码来创建一个名为“DateOfBirth”的列,相反,Hibernate为我提供了一个名为date_of_birth的列。我该如何更改?有没有web.xml属性?我遇到了DefaultNamingStrategy和改进的NamingStrategy,但是不确定如

  • 我刚刚注意到,Hibernate根据名称(可能是column或带注释的类)自动假定查询参数的数据类型。我试图将unix时间戳存储在MySQL数据库的BIGINT列中。当名称在数据库和我的(JPA)注释类中为timestamp时,Hibernate自动假定它是一个时态值,因此当我试图在查询中为该列绑定一个长值时,我会得到一个异常,因为Hibernate需要java.util.Date。当我在数据库和

  • 我正在尝试使用mySql全文索引“匹配”语法进行查询。 我将Spring Boot版本从1.5.4.RELEASE更改为2.0.0m7,以使用spring data jpa版本2.0.2.Releases,因为在早期的spring data jpa版本中,带有countQuery的本机查询不起作用。 我已经用这里和这里的解决方案解决了几个问题。 当前的问题是以下错误: 这是代码 如果我尝试将可分页

  • 问题内容: 这是我的问题:我想检查名称已参数化的表中的行,如。X的值来自另一个表,例如,在我的主表中,我有一列和一列X,要连接的表的名称为table_X,毫无疑问,它存在,并且具有相同的column ,我将其连接,以检查该表中是否有值。 我尝试过一个视图,但是没有成功,因为我无法在视图中放置参数化的表名。我可以参数化where子句和其他东西,但是没有表名。 我已经尝试过一个程序 PREPARE s

  • 我对一个问题感到沮丧,我花了几个小时试图解决它!问题是。我试图查找一个已经在我的jboss服务器中声明的主题(MyBestTopic ),但是我有这个异常 在我的java代码中,我试图像这样检索主题: 查看jboss server的启动,我可以看到主题与正确的名称绑定得很好: 最后,当我在jmx控制台上看到jndiView树时,该主题也得到了很好的部署: 相同的java在具有相同部署主题和数据源的

  • 问题内容: 有没有一种简单的方法可以进入python函数并获取参数名称列表? 例如: 谢谢 问题答案: 好吧,我们实际上不需要这里。 对于Python 2.5及更高版本,请使用代替和代替。