PSQLException: Can't infer the SQL type ... 使用 setObject() (我正在使用它!)

Posted

技术标签:

【中文标题】PSQLException: Can\'t infer the SQL type ... 使用 setObject() (我正在使用它!)【英文标题】:PSQLException: Can't infer the SQL type ... Use setObject() (I am using it!)PSQLException: Can't infer the SQL type ... 使用 setObject() (我正在使用它!) 【发布时间】:2018-12-02 02:44:41 【问题描述】:

嗨,也许我可以再次在这里获得帮助!我正在测试服务器以连接到数据库,到目前为止它可以工作,我可以插入 UUID 数据。但是当我尝试迁移到另一个项目时,相同的功能无法正常工作。它不会将数据保存在数据库中...我已经检查了所有内容,但肯定有一些我没有注意到的问题...任何帮助或指导将不胜感激。

package ...


imports ...

@Path("/UserPoints")
public class getNewPoints 

    @Path("/getNewPoints")
    @GET
    @Produces(MediaType.TEXT_PLAIN)

    public Response getUserPoints(@QueryParam("user_id") UUID username,
                                   @QueryParam("point_id") int pointId,
                                   @QueryParam("earned_points") int points
    ) 
        try 
            if (username == null)
                throw new Exception("Invalid data");
            else 
                Class.forName("org.postgresql.Driver");
                Connection connection  = DriverManager.getConnection(DBURL,DBUSER, DBPASS);
                PreparedStatement statement = connection.prepareStatement(SQLQuery.getQuery("new_earned_points"));
                statement.setObject(1, UUID.fromString(username.toString()));  //THIS WORKS IN THE ORIGINAL PROJECT
                statement.setInt(2, pointId);
                statement.setInt(3, points);
                statement.executeUpdate();
                statement.close();
                System.out.println("points.. on get New Points... " + points);
            

         catch (Exception e) 
            e.printStackTrace();
            System.out.println(e.getMessage());
        
        return Response.status(Response.Status.OK).entity("new points added to user " + pointId).build();
    


解决方案检查堆栈跟踪后,我注意到 postgresql 版本是旧版本...所以我在 pom 中更新了它,然后它工作了。

【问题讨论】:

参数是username还是useridusername 是字符串还是 UUID?因为在 UUID 上调用 toString() 并从中生成新的 UUID 没有多大意义。 它是数据库中的 user_id,我将公共响应中的参数更改为匹配 user_id 但仍然出现错误.... 当然,您可以替换您提交给minimal reproducible example 的大量代码来演示问题。这样做的练习将对您有用,其结果不仅对我们这些可能想要回答问题的人有所帮助,而且对以后阅读它的每个人都有帮助。 谢谢,我很抱歉......顺便说一句,我修复了它只是 pom 中的 posgresql 版本......再次为代码山感到抱歉 【参考方案1】:

我正在发布已编辑到原始问题中的答案:

解决方案检查堆栈跟踪后,我注意到 postgresql 版本是旧版本...所以我在 pom 中对其进行了更新,然后它就可以工作了。

【讨论】:

以上是关于PSQLException: Can't infer the SQL type ... 使用 setObject() (我正在使用它!)的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 上的 PSQLException

org.postgresql.util.PSQLException:连接尝试失败

PSQLException:错误:在或附近出现语法错误

PSQLException:此 ResultSet 已关闭

PSQLException:错误:关系“表”不存在

org.postgresql.util.PSQLException:没有为参数 1 指定值。- Postgres