【发布时间】:2019-06-13 15:34:11
【问题描述】:
我在从数据库中从用户实体中获取角色的结果集时遇到问题 throw hibernate 这是我目前所拥有的: 这是数据库 my sql database
这是我得到的例外
白标错误页面
此应用程序没有 /error 的显式映射,因此您将此视为后备。
2019 年 1 月 19 日星期六 18:37:17 CET 出现意外错误(类型=内部服务器错误,状态=500 ).Could not write JSON: could not extract ResultSet;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException: could not extract ResultSet (通过引用链: java.util.ArrayList[0]->com.example.springboot.model.User["roles"])
这些是我的 java bean:用户实体
package com.example.springboot.model;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name="user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="userid")
private int id;
@Column(name="username")
private String username;
@Column(name="name")
private String name;
@Column(name="email")
private String email;
@Column(name="password")
private String password;
@Column(name="datecreated")
private String dateCreated;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "userid"), inverseJoinColumns = @JoinColumn(name = "roleid"))
private Set<Role> roles = new HashSet<>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDateCreated() {
return dateCreated;
}
public void setDateCreated(String dateCreated) {
this.dateCreated = dateCreated;
}
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
@Override
public String toString() {
return "Userid: "+id;
}
}
和角色实体
package com.example.springboot.model;
import javax.persistence.*;
@Entity
@Table(name="role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private int id;
@Column(name="role")
private String role;
@Column(name="description")
private String description;
}
请帮助我,我整天都在尝试解决这个问题,但没有希望。
- 2019-01-19 18:28:05.321 INFO 9968 --- [nio-8080-exec-2] o.h.h.i.QueryTranslatorFactoryInitiator:HHH000397:使用 ASTQueryTranslatorFactory
- 2019-01-19 18:28:05.499 WARN 9968 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL 错误:1054,SQLState:42S22
- 2019-01-19 18:28:05.499 错误 9968 --- [nio-8080-exec-2] ohengine.jdbc.spi.SqlExceptionHelper:“字段列表”中的未知列“role1_.id”李>
- 2019-01-19 18:28:05.501 WARN 9968 --- [nio-8080-exec-2] .wsmsDefaultHandlerExceptionResolver:已解决 [org.springframework.http.converter.HttpMessageNotWritableException:无法写入 JSON:无法提取结果集;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException: could not extract ResultSet (through reference chain: java.util.ArrayList[0]->com.example.springboot.model.User["roles"])]李>
- 2019-01-19 18:28:08.440 WARN 9968 --- [nio-8080-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL 错误:1054,SQLState:42S22
- 2019-01-19 18:28:08.440 错误 9968 --- [nio-8080-exec-3] ohengine.jdbc.spi.SqlExceptionHelper:“字段列表”中的未知列“role1_.id”李>
- 2019-01-19 18:28:08.440 WARN 9968 --- [nio-8080-exec-3] .wsmsDefaultHandlerExceptionResolver:已解决 [org.springframework.http.converter.HttpMessageNotWritableException:无法写入 JSON:无法提取结果集;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException: could not extract ResultSet (through reference chain: com.example.springboot.model.User["roles"])]
- 2019-01-19 18:37:17.963 WARN 9968 --- [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL 错误:1054,SQLState:42S22
- 2019-01-19 18:37:17.963 错误 9968 --- [nio-8080-exec-4] ohengine.jdbc.spi.SqlExceptionHelper:“字段列表”中的未知列“role1_.id”李>
- 2019-01-19 18:37:17.963 WARN 9968 --- [nio-8080-exec-4] .wsmsDefaultHandlerExceptionResolver:已解决 [org.springframework.http.converter.HttpMessageNotWritableException:无法写入 JSON:无法提取结果集;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException: could not extract ResultSet (through reference chain: java.util.ArrayList[0]->com.example.springboot.model.User["roles"])]李>
【问题讨论】:
-
在日志中提到未知列“role1_.id”,请提供您的架构详细信息以及您正在尝试的内容,即 getRoles 或 getRole ?
-
架构与第二行图片中的相同我没有role1_.id。我分别有多对多的user_role talbe和用户和角色表。我正在尝试获取所有用户与: public List
getUsers(){ return (List ) userRepository.findAll(); }
标签: java spring hibernate spring-boot jpa