我有一个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转换为单个值?
暂无答案!
目前还没有任何答案,快来回答吧!