有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

hibernate我们可以用java制作UPPER来代替UPPER函数吗?

我想删除hql中使用的upper函数,并在java端生成upper。以下是查询:-

String hql = "SELECT addType FROM addrDO WHERE **UPPER**(id.address) = **UPPER**('"+ address +"')";

我想在查询中使用toUpperCase()java函数,而不是使用UPPER,比如java端的"id.address".toUpperCase()address.toUpperCase(),现在查询应该是

String hql = "SELECT addType FROM addrDO WHERE id.address = address;

以上工作不会有任何副作用


共 (2) 个答案

  1. # 1 楼答案

    您试图生成一个动态查询,该查询最终将由数据库服务器执行,而不是在JVM中执行,因此您需要遵守数据库服务器的语法

    如果您想使用java的toUpperCase方法,最好中断查询并使用类似

    String idAddress = "id.address";
    String address = "'\"+ address +\"'";
    
    String hql = "SELECT addType FROM addrDO WHERE "+ idAddress.toUpperCase() +" = " + address.toUpperCase() + ";";
    

    这是不可暗示的,因为您不必要地耗尽了jvm的内存

  2. # 2 楼答案

    第一个查询使用UPPER函数在WHERE子句中实现不区分大小写的比较,第二个查询使用区分大小写的比较

    因为比较必须在数据库中进行,所以不能在应用层用Java的toUpperCase替换它