我有一个具有id和角色名称的Roles表和一个具有role_id的users表。我想加入这些但我在尝试这样做时会收到错误Could not determine type for: com.aon04.backend.models.Role, at table: users, for columns: [org.hibernate.mapping.Column(role)]
。
这是我的榜样:
@Entity
@Table(name = "roles")
public class Role {
@Id
@GeneratedValue()
@Column(name = "id")
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id", nullable = false)
@JsonIgnore
public User user;
@Column(name = "name", nullable = false)
private String name;
}
这是我的用户模型:
@Entity
@Table(name = "users")
public class User implements Serializable {
@Id
@GeneratedValue()
@Column(name = "id")
private int id;
public Role role;
public String getStudentNumber() {
return studentNumber;
}
public void setStudentNumber(String studentNumber) {
this.studentNumber = studentNumber;
}
@Column(name = "student_number", nullable = true)
private String studentNumber;
@Column(name = "first_name", nullable = true)
private String firstName;
@Column(name = "last_name", nullable = true)
private String lastName;
@Column(name = "email", nullable = true, unique = true)
private String email;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "user")
private FinishedExam finishedExam;
@JsonIgnore
@Column(name = "password", nullable = true)
private String password;
@Column(name = "created_at")
private LocalDateTime createdAt;
@Column(name = "updated_at")
private LocalDateTime updatedAt;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "event_users",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "event_id", referencedColumnName = "id")
)
@PreUpdate
protected void onUpdate() {
updatedAt = LocalDateTime.now();
}
@PrePersist
protected void onCreate() {
createdAt = LocalDateTime.now();
updatedAt = createdAt;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
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 LocalDateTime getCreatedAt() {
return createdAt;
}
public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
}
public LocalDateTime getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(LocalDateTime updatedAt) {
this.updatedAt = updatedAt;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
我无法弄清楚我做错了什么。我想要的输出是当我检索用户的JSON时我想要显示角色的用户数据。
答案 0 :(得分:1)
您的模型中存在不一致之处:Role
的{{1}}与ManyToOne有关系,因此您的User
应该有User
的集合
您没有在Role
中映射role
,通过添加双向关系来实现:
User
答案 1 :(得分:1)
我可以看到您拥有从角色到用户的多对一关系。用户可以拥有多个角色吗? 您需要在用户表中添加用户与角色的关联。当用户可以拥有多个角色时,它可能是@ManyToMany