简体   繁体   English

SQL查询内部服务器错误

[英]Internal server error with SQL query

I am new to hibernate but I have a rough idea on what usually to do, this case, I can't say that is working out. 我是冬眠的新手,但是对于这种情况我通常会有一个粗略的想法,我不能说这正在解决。 I'm trying to create a filtering system which allows you to sort out different clients in this case with users. 我正在尝试创建一个过滤系统,使您可以在这种情况下与用户对不同的客户端进行分类。 My SQL query is working correctly: 我的SQL查询工作正常:

  SELECT * FROM [de_user_site] WHERE [deactivation_time] = '9999-12-31 00:00:00.000' AND [user_id] IN (SELECT [user_id] FROM [de_users] WHERE [client_id] = 1)

And I've tried to turn that into a java query: 而且我尝试将其转换为Java查询:

        queryStr = "SELECT e FROM DeSiteUser e " + queryStr;
        String queryStr = " WHERE e.deactivationTime = '9999-12-31 00:00:00.000' ";
        if (clientId != null) {
            queryStr += String.format("AND e.userId IN (SELECT id FROM DeUser u WHERE ");

        if (clientId != null) {
            queryStr += String.format("u.clientId = %d ", clientId);
        }
    }

However, I am having an issue with this: 但是,我对此有疑问:

Internal Server Error [#500]: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found 'null' near line 1, column 214 [SELECT e FROM com.velatt.dartentitlements.domain.DeSiteUser e WHERE e.deactivationTime = '9999-12-31 00:00:00.000' AND e.userId IN (SELECT id FROM com.velatt.dartentitlements.domain.DeUser u WHERE u.clientId = 6 ]

Does anyone know what I am forgetting, my SQL query is correct but I don't understand why it hasn't worked out for the java query? 有谁知道我忘记了什么,我的SQL查询是正确的,但是我不明白为什么它不能用于java查询?

You missed close braces. 你错过了大括号。 Error says it all. 错误说明了一切。

SELECT e FROM com.velatt.dartentitlements.domain.DeSiteUser e WHERE e.deactivationTime = '9999-12-31 00:00:00.000' AND e.userId IN (SELECT id FROM com.velatt.dartentitlements.domain.DeUser u WHERE u.clientId = 6 

Your code should have close braces something like this 您的代码应该有密切的括号像这样

queryStr = "SELECT e FROM DeSiteUser e " + queryStr;
String queryStr = " WHERE e.deactivationTime = '9999-12-31 00:00:00.000' ";
if (clientId != null) {
    queryStr += String.format("AND e.userId IN (SELECT id FROM DeUser u WHERE ");
    queryStr += String.format("u.clientId = %d ", clientId);
    queryStr += " ) ";
}

Please replace your given code with below. 请使用下面的代码替换给定的代码。 you have missed to add ')' as the and of subquery. 您错过了将')'作为子查询的和。

queryStr = "SELECT e FROM DeSiteUser e " + queryStr;
    String queryStr = " WHERE e.deactivationTime = '9999-12-31 00:00:00.000' ";
    if (clientId != null) {
        queryStr += String.format("AND e.userId IN (SELECT id FROM DeUser u WHERE ");

    if (clientId != null) {
        queryStr += String.format("u.clientId = %d )", clientId);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM