Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以用java制作UPPER来代替UPPER函数吗?_Java_Hibernate - Fatal编程技术网

我们可以用java制作UPPER来代替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

我想删除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 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