使用Java 1.8.0_121 + SQL Server 2017在Jboss-eap-7.1.0服务器上执行hql查询时出错

时间:2018-06-22 05:22:29

标签: java-8 sql-server-2017 jboss-eap-7

当天的问候

我正在使用SQL Server 2017在带有jdk 1.8.0_121的jboss-eap-7.1.0上执行以下查询。

select from  UserDO user where user.userStatusCd <> 'ACTIVE'

我的观察是,当我们使用<>运算符时,出现错误。如果我们使用“ 不在('ACTIVE')”中,则它将成功运行。 <>可以,但是> =(大于或等于)或一些特殊字符(例如“ | ”(竖线))使用什么。我可以使用 beetween 关键字,但是如何处理特殊字符?我收到了以下错误消息,您能否建议它发生的原因或解决方案,或者暂时解决此问题的方法。

[ERROR] java.nio.file.InvalidPathException: Illegal char <<> at index 0: <>.class
[ERROR]         at sun.nio.fs.WindowsPathParser.normalize(Unknown Source)
[ERROR]         at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
[ERROR] find by example failed
org.hibernate.QueryException: Incorrect query syntax [select from  com.c2lbiz.symbiosys.systemcommon.dataobjects.security.UserDO user where user.userStatusCd <> 'ACTIVE']
        at org.hibernate.hql.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:232)
        at org.hibernate.hql.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:185)    

我不明白的一件事,为什么会给出 java.nio.file.InvalidPathException 此查询已在wildfly服务器上成功执行,但在eap-7服务器上却给出了错误。

以下是我执行hql的Java代码:

    {
            query = session.createQuery(baseIO.getQuery());
            List<Object[]> results =  query.list();
            baseIO.setList(results);
    }

此外,在我的日志中没有日期和时间。您还可以建议吗?

在此先感谢您,随时询问您是否需要。

1 个答案:

答案 0 :(得分:1)

您可能要使用Jboss 7.1.1,并将以下选项设置为TRUE,ALLOW_UNESCAPED_CHARACTERS_IN_URL

./ bin / standalone.sh -Dorg.wildfly.undertow.ALLOW_UNESCAPED_CHARACTERS_IN_URL = true

Jboss 7.1.0不提供此解决方案,因此您可能不想在此浪费时间。理想情况下,Jboss将此版本从6.4.18 +(RFC1738)补丁更改了,但在7.1.0中却有所遗漏。

有关更多信息,请访问Jboss积压,https://issues.jboss.org/browse/JBEAP-13710