Java PSQLException:Can';无法推断SQL类型。。。使用setObject()(我正在使用它!)
嗨,也许我能在这里再次得到帮助!我正在测试一个服务器,以连接到数据库,到目前为止,它可以工作,我可以插入UUID数据。但是,当我尝试迁移到另一个项目时,相同的功能无法正常工作。它不会将数据保存在数据库中…我已经检查了所有内容,但一定有什么我没有注意到的问题。。。任何帮助或指导都将不胜感激Java PSQLException:Can';无法推断SQL类型。。。使用setObject()(我正在使用它!),java,database,rest,jersey,uuid,Java,Database,Rest,Jersey,Uuid,嗨,也许我能在这里再次得到帮助!我正在测试一个服务器,以连接到数据库,到目前为止,它可以工作,我可以插入UUID数据。但是,当我尝试迁移到另一个项目时,相同的功能无法正常工作。它不会将数据保存在数据库中…我已经检查了所有内容,但一定有什么我没有注意到的问题。。。任何帮助或指导都将不胜感激 package ... imports ... @Path("/UserPoints") public class getNewPoints { @Path("/getNewPoints")
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();
}
}
解决方案检查stacktrace后,我注意到postgresql版本是旧版本。。。所以我在pom中更新了它,然后它就开始工作了 参数是用户名还是用户ID?用户名是字符串还是UUID?因为在UUID上调用toString()然后从中生成新的UUID没有多大意义。它是数据库中的用户id,我更改了公共响应中的参数以匹配用户id,但仍然得到了错误……当然,您可以替换向演示此问题的用户提交的堆积如山的代码。这样做的练习将对你有用,结果不仅对我们这些可能想回答这个问题的人有帮助,而且对以后阅读它的每个人也有帮助。谢谢你,对此我很抱歉。。。顺便说一句,我修复了它,它只是pom中posgresql的版本。。。再次为堆积如山的代码感到抱歉