Java 使用JDBI将sqlobject存储到Mysql表时失败

Java 使用JDBI将sqlobject存储到Mysql表时失败,java,mysql,jdbc,dropwizard,jdbi,Java,Mysql,Jdbc,Dropwizard,Jdbi,我尝试使用JDBI将SQL对象存储到MYSQL表中。在给定的POJO对象中,有一个成员(允许的iam角色)类型为-List。而且,它在这里失败了,表现出异常- java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'allowed_iam_roles' at row 1 INFO [2017-03-06 05:36:15,899] com.xxx.dataplatform.snowf

我尝试使用JDBI将SQL对象存储到MYSQL表中。在给定的POJO对象中,有一个成员(允许的iam角色)类型为-
List
。而且,它在这里失败了,表现出异常-

java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'allowed_iam_roles' at row 1
INFO  [2017-03-06 05:36:15,899] com.xxx.dataplatform.snowflake.warehousemanagementservice.resources.BSSInteractionResource: Processing request - **StoreCredentialsRequest{requestType=STORE_CREDENTIALS, createdAt=Mon Mar 06 11:06:15 IST 2017, completedAt=null, username='preeti', password='preeti_password', allowedIAMRoles=[codedeploy-gargantua]}**
ERROR [2017-03-06 05:36:16,598] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: dea2d5afb8a3185c
! java.sql.SQLException: **Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'allowed_iam_roles' at row 1**
! at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1193) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at org.skife.jdbi.v2.SQLStatement.internalExecute(SQLStatement.java:1328) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! ... 64 common frames omitted
! Causing: org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException: java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'allowed_iam_roles' at row 1 [statement:"insert into bss_interaction_request(username, password, allowed_iam_roles, request_type, created_at, completed_at) values(:request.username, :request.password, :request.allowedIAMRoles, :request.requestType, :request.createdAt, :request.completedAt );", located:"insert into bss_interaction_request(username, password, allowed_iam_roles, request_type, created_at, completed_at) values(:request.username, :request.password, :request.allowedIAMRoles, :request.requestType, :request.createdAt, :request.completedAt );", rewritten:"/* BSSInteractionDao.storeStoreCredentialsRequest */ insert into bss_interaction_request(username, password, allowed_iam_roles, request_type, created_at, completed_at) values(?, ?, ?, ?, ?, ? );", arguments:{ positional:{}, named:{request.username:'preeti',request.allowedIAMRoles:[codedeploy-gargantua],request.createdAt:Mon Mar 06 11:06:15 IST 2017,request.password:'preeti_password',request.class:class com.xxx.dataplatform.snowflake.warehousemanagementservice.model.StoreCredentialsRequest,request.completedAt:null,request.requestType:STORE_CREDENTIALS}, finder:[]}]
Java代码-

@SqlUpdate("insert into bss_interaction_request(username, password, allowed_iam_roles, request_type, " +
            "created_at, completed_at) values(:request.username, :request.password, " +
            ":request.allowedIAMRoles, :request.requestType, :request" +
            ".createdAt, " +
            ":request.completedAt" +
            " );")
    public void storeStoreCredentialsRequest( @BindBean("request") StoreCredentialsRequest storeCredentialsRequest);
详细例外-

java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'allowed_iam_roles' at row 1
INFO  [2017-03-06 05:36:15,899] com.xxx.dataplatform.snowflake.warehousemanagementservice.resources.BSSInteractionResource: Processing request - **StoreCredentialsRequest{requestType=STORE_CREDENTIALS, createdAt=Mon Mar 06 11:06:15 IST 2017, completedAt=null, username='preeti', password='preeti_password', allowedIAMRoles=[codedeploy-gargantua]}**
ERROR [2017-03-06 05:36:16,598] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: dea2d5afb8a3185c
! java.sql.SQLException: **Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'allowed_iam_roles' at row 1**
! at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1193) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! at org.skife.jdbi.v2.SQLStatement.internalExecute(SQLStatement.java:1328) ~[warehouse-management-service-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
! ... 64 common frames omitted
! Causing: org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException: java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'allowed_iam_roles' at row 1 [statement:"insert into bss_interaction_request(username, password, allowed_iam_roles, request_type, created_at, completed_at) values(:request.username, :request.password, :request.allowedIAMRoles, :request.requestType, :request.createdAt, :request.completedAt );", located:"insert into bss_interaction_request(username, password, allowed_iam_roles, request_type, created_at, completed_at) values(:request.username, :request.password, :request.allowedIAMRoles, :request.requestType, :request.createdAt, :request.completedAt );", rewritten:"/* BSSInteractionDao.storeStoreCredentialsRequest */ insert into bss_interaction_request(username, password, allowed_iam_roles, request_type, created_at, completed_at) values(?, ?, ?, ?, ?, ? );", arguments:{ positional:{}, named:{request.username:'preeti',request.allowedIAMRoles:[codedeploy-gargantua],request.createdAt:Mon Mar 06 11:06:15 IST 2017,request.password:'preeti_password',request.class:class com.xxx.dataplatform.snowflake.warehousemanagementservice.model.StoreCredentialsRequest,request.completedAt:null,request.requestType:STORE_CREDENTIALS}, finder:[]}]
这个问题有用吗?顺便说一句,您可以去掉@BindBean注释和sql正文中的“request”字符串。也就是说,在SQL和(@BindBean StoreCredentialsRequest StoreCredentialsRequest)的方法参数部分中引用“username”而不是“request.username”等等,除非您需要绑定多个bean。