我们可以用java制作UPPER来代替UPPER函数吗?
我想删除hql中使用的upper函数,并在java端生成upper。以下是查询:-我们可以用java制作UPPER来代替UPPER函数吗?,java,hibernate,Java,Hibernate,我想删除hql中使用的upper函数,并在java端生成upper。以下是查询:- String hql = "SELECT addType FROM addrDO WHERE **UPPER**(id.address) = **UPPER**('"+ address +"')"; 我想使用toUpperCase()java函数,而不是在查询中使用UPPER,比如“id.address”.toUpperCase()和address.toUpperCase(),现在查询应该是这样的 String
String hql = "SELECT addType FROM addrDO WHERE **UPPER**(id.address) = **UPPER**('"+ address +"')";
我想使用toUpperCase()
java函数,而不是在查询中使用UPPER,比如“id.address”.toUpperCase()
和address.toUpperCase()
,现在查询应该是这样的
String hql = "SELECT addType FROM addrDO WHERE id.address = address;
上述操作不会产生任何副作用。第一个查询使用
UPPER
函数在WHERE
子句中实现不区分大小写的比较,第二个查询使用区分大小写的比较
因为比较必须在数据库中进行,所以不能在应用程序层用Java的
toUpperCase
替换它。第一个查询使用UPPER
函数在WHERE
子句中实现不区分大小写的比较,第二个查询使用区分大小写的比较
因为比较必须在数据库中进行,所以不能在应用层用Java的
toUpperCase
替换它。您试图生成一个动态查询,该查询最终将由数据库服务器而不是JVM执行,因此您需要遵守数据库服务器的语法
如果您想使用java的toUpperCase方法,最好中断查询并使用类似
String idAddress = "id.address";
String address = "'\"+ address +\"'";
String hql = "SELECT addType FROM addrDO WHERE "+ idAddress.toUpperCase() +" = " + address.toUpperCase() + ";";
这是不可暗示的,因为您正在不必要地使用jvm的内存您正在尝试生成一个动态查询,该查询最终将由数据库服务器而不是jvm执行,因此您需要遵守数据库服务器的语法 如果您想使用java的toUpperCase方法,最好中断查询并使用类似
String idAddress = "id.address";
String address = "'\"+ address +\"'";
String hql = "SELECT addType FROM addrDO WHERE "+ idAddress.toUpperCase() +" = " + address.toUpperCase() + ";";
这是不可暗示的,因为您不必要地耗尽了jvm的内存我数据库中存储的所有地址都是大写的,因此希望从查询中删除UPPER(),这就是为什么我要将地址转换为大写@java side。在这种情况下,应该没有问题,只需从查询中删除
UPPER
,然后使用toUpperCase()
在参数上。另一个建议是:在查询中,最好使用参数,而不是连接HQL文本,否则,如果变量address
看起来像123'或1=1
,则可能会遭受SQL注入攻击。my DB中存储的所有地址都是大写的,因此希望删除UPPER()从查询中,这就是我将地址转换为大写@java side的原因。在这种情况下,应该没有问题,只需从查询中删除UPPER
,并在参数上使用toUpperCase()
。另一个建议是:在查询中最好使用参数,而不是连接HQL文本,否则,如果变量address
看起来像123'或1=1