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还是userid? username 是字符串还是 UUID?因为在 UUID 上调用 toString() 并从中生成新的 UUID 没有多大意义。 它是数据库中的 user_id,我将公共响应中的参数更改为匹配 user_id 但仍然出现错误.... 当然,您可以替换您提交给minimal reproducible example 的大量代码来演示问题。这样做的练习将对您有用,其结果不仅对我们这些可能想要回答问题的人有所帮助,而且对以后阅读它的每个人都有帮助。 谢谢,我很抱歉......顺便说一句,我修复了它只是 pom 中的 posgresql 版本......再次为代码山感到抱歉 【参考方案1】:我正在发布已编辑到原始问题中的答案:
解决方案检查堆栈跟踪后,我注意到 postgresql 版本是旧版本...所以我在 pom 中对其进行了更新,然后它就可以工作了。
【讨论】:
以上是关于PSQLException: Can't infer the SQL type ... 使用 setObject() (我正在使用它!)的主要内容,如果未能解决你的问题,请参考以下文章