簡體   English   中英

java.lang.IllegalArgumentException:參數數量必須在org.javalite.activejdbc.Model.set處為偶數

[英]java.lang.IllegalArgumentException: number of arguments must be even at org.javalite.activejdbc.Model.set

請求正文:

request.body {"username":"kkk.k999@gmail.com","userImage":"https://lh3.googleusercontent.com/-XdUIqdMkffA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=50","role":"ROLE_USER","token":"ya29.GmIYBNhh5zs2Cpq1UI2iVzdxDvMVf2x8ggpEgM9Jvk51f5FOGodUZINrabY6K9Mhn6L82XpUhOyh5uIPhLZkAjIqS1hBu7un9QhMzRW35
RJM5ZwFozlBIuuxFRP4Y5xsTtdPGw"}

保存到Db時出錯:

@Override
public void saveUserInfo(Request request) {
    Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/47seconds", "root", "admin");
    ObjectMapper mapper = new ObjectMapper();
    try {
        UserInfo userInfo = mapper.readValue(request.body(), UserInfo.class);

        userInfo.set(userInfo.getUsername());
        userInfo.set(userInfo.getUserImage());
        userInfo.set(userInfo.getRole());
        userInfo.set(userInfo.getToken());

        userInfo.saveIt();

    } catch (IOException ex) {
        Logger.getLogger(UserServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
    }
    Base.close();
}

錯誤: java.lang.IllegalArgumentException:在org.javalite.activejdbc.Model.set處,參數個數必須是偶數

模型類和數據庫中的參數數目匹配。 數據庫中的id是自動遞增的,因此我沒有從代碼中傳遞它。

型號類別:

@Table("user_info")
public class UserInfo extends Model {

    private String username;
    private String userImage;
    private String token;
    private String role;

    /**
     * @return the username
     */
    public String getUsername() {
        return username;
    }

    /**
     * @param username the username to set
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * @return the userImage
     */
    public String getUserImage() {
        return userImage;
    }

    /**
     * @param userImage the userImage to set
     */
    public void setUserImage(String userImage) {
        this.userImage = userImage;
    }

    /**
     * @return the token
     */
    public String getToken() {
        return token;
    }

    /**
     * @param token the token to set
     */
    public void setToken(String token) {
        this.token = token;
    }

    /**
     * @return the role
     */
    public String getRole() {
        System.out.println("printing role "+ role);
        return role;
    }

    /**
     * @param role the role to set
     */
    public void setRole(String role) {
        this.role = role;
    }

}

您對ActiveJDBC API的使用不正確。

  1. 不需要注釋@Table,因為您的模型名稱與表名稱相對應
  2. 不需要聲明屬性
  3. 您調用了錯誤的方法set
  4. 您有意大利面條代碼userInfo.set(userInfo.getUsername()); -您正在將數據從一個對象設置到同一對象????

您的模型必須(完整)為:

public class UserInfo extends Model {}

這就是您所需要的。

如果需要在模型上設置值,則可以:

userInfo.set("user_name", userName); 

等等

我建議您閱讀文檔並嘗試自己解決問題,因為您的問題表明您缺乏工作量。

暫無
暫無

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

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