Java HQL-通过电子邮件或带有点(';';)的字符串进行查询时,始终返回空集

Java HQL-通过电子邮件或带有点(';';)的字符串进行查询时,始终返回空集,java,spring,hibernate,sql-server-2008,Java,Spring,Hibernate,Sql Server 2008,这是我的HQL查询 Query query = getCurrentSession().createQuery( "from User where username = :usersName "); query.setParameter("usersName", usersName); 现在,如果用户名包含点“.”字符,则返回空集,否则返回用户详细信息 我试过什么 在服务器中执行sql查询,返回用户详细信息 将参数直接连接到查询字符串中,得到相同的错误 已尝试

这是我的HQL查询

Query query = getCurrentSession().createQuery(
            "from User where username = :usersName ");
    query.setParameter("usersName", usersName);
现在,如果用户名包含点“.”字符,则返回空集,否则返回用户详细信息

我试过什么

在服务器中执行sql查询,返回用户详细信息

将参数直接连接到查询字符串中,得到相同的错误

已尝试的条件查询遇到了相同的问题


哪里可能有问题?

尝试使用以下方法:
query.setString(“usersName”,usersName)

尝试使用这个:
query.setString(“usersName”,usersName)

您可以尝试以下方法:

query.setString("usersName", usersName.replaceAll("@", "/@")); query.setString(“usersName”,usersName.replaceAll(“@”,“/”) 您可以尝试以下方法:

query.setString("usersName", usersName.replaceAll("@", "/@"));
query.setString(“usersName”,usersName.replaceAll(“@”,“/”);问题可能是前导或尾随空格或类似的内容。如果您使用“from User where username LIKE:usersName”并将
usersName
设置为相同的内容,但将
@
替换为
%
您会得到什么?尝试使用“LIKE”,如果它有效,那么问题是
@
如果您使用LIKE的相同结果意味着没有结果,那么问题就不是
@
是的,正是dot
的问题,而不是
@
字符的问题。我通过更改数据库中的值直接进行了测试。可能您的点(以DB为单位)是某种unicode点,而不是ascii点。问题可能是前导或尾随空格或类似的东西。如果您使用“from User where username LIKE:usersName”并将
usersName
设置为相同的内容,但将
@
替换为
%
您会得到什么?尝试使用“LIKE”,如果它有效,那么问题是
@
如果您使用LIKE的相同结果意味着没有结果,那么问题就不是
@
是的,正是dot
的问题,而不是
@
字符的问题。我通过更改数据库中的值直接进行了测试,可能您的点(以DB为单位)是某种unicode点,而不是ascii点。