簡體   English   中英

錯誤:帶有參數的“$1”postgresql 查詢處或附近的語法錯誤

[英]ERROR: syntax error at or near "$1" postgresql query with params

我有一個帶有參數的 postgres 查詢,在我的 Java 代碼中,我使用 stringBuilder 來構建查詢,然后使用 createNativeQuery 來創建查詢並填充參數。 但是,如果我在 gui 中運行查詢,它會給我預期的結果,但在通過代碼執行時會出錯。 我是 postgres 的新手,看到了一些與我需要在查詢中轉換參數幾乎相同的問題,但我的查詢中有 IN 參數,即列表,我嘗試了一些解決方案,但沒有沒用。

我收到錯誤:-> "error": "Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: org.postgresql. util.PSQLException:錯誤:“$1”處或附近的語法錯誤位置:249

        StringBuilder sb = new StringBuilder();
        sb.append(" SELECT comments.comment, mapping.user_id, 
        mapping.comment_id, mapping.comment_state, 
        mapping.created_at  FROM comments ").append(" comment 
        JOIN ").
        append(" user_comment_mapping  mapping ON 
        mapping.comment_id = comment.id WHERE 
        mapping.user_id IN ? AND mapping.comment_state = ? 
        ");

        final Query query = em.createNativeQuery(sb.toString());
        query.setParameter("1", userIds);
        query.setParameter("2", 
        2);

        List<Object[]> list = query.getResultList();

謝謝!

看來您在參數持有者和名稱之間混用了。

如果你想使用 holder :

mapping.user_id IN ? AND mapping.comment_state = ? 

然后

query.setParameter(1, userIds);
query.setParameter(2, 2);

如果要使用名稱:

mapping.user_id IN :ids AND mapping.comment_state = :stat


query.setParameter("ids", userIds);
query.setParameter("stat", 2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM