将json数组字段更改为字符串

hpxqektj  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(291)

我有一个spring引导应用程序,它连接到一个现有的数据库(jhipster网关),以便操纵数据库以将用户插入其中。到目前为止,它的工作,我可以连接到我的数据库,并插入一个用户,如果我给一个属性硬编码的权限属性的用户。但是我想通过json发送这个,而不是给出一个硬编码的。
这是我的json请求(仅相关部分):

"activated": true,
        "authorities": [
            "ROLE_ADMIN"
        ]

这是我用来保存用户的用户实体:

@Entity
@Table(name = "jhi_user")
public class Users implements Serializable  {

private String authorities;

    public String getAuthorities() {
        return authorities;
        }

    public void setAuthorities(String authorities) {
        this.authorities = authorities;
    }
}

这是我的保存方法:

public void addUser(@RequestBody Users user){
        userService.saveUser(user);
        Authority authority = new Authority();
        authority.setUserId(user.getId());
        authority.setName(user.getAuthorities());
        authorityService.saveAuthority(authority);
    }

我有一个authority类,因为与用户连接的权限保存在一个已存在的联接表上:

@Entity
@Table(name = "jhi_user_authority")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Authority implements Serializable {

@Id
    @NotNull
    @Column(name = "user_id")
    private Long userId;

    @NotNull
    @Column(name = "authority_name")
    private String
            name ;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }
}

我得到的错误是missmatchedinputexception,我知道这是因为我在代码中保存了一个字符串,并通过json发送了一个数组。

deserialize instance of `java.lang.String` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token

但如果我将权限更改为数组,则会出现以下错误:

Unknown column 'authorities' in 'field list'

在我的用户类中。我有点搞不清楚怎么解决这个问题。发送时是否可以将jsonarray转换为单个值?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题