休眠给出无法确定类型错误



我有一个角色表,它有一个ID和角色名称,还有一个用户表有一个role_id。我想加入这些,但是当我尝试这样做时,我收到错误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 时,我希望显示具有角色名称的用户数据。

您的模型中存在不一致:Role具有具有 ManyToOne 关系的User,因此您的User应该具有一组Role您没有在User中映射您的role,通过添加双向关系来实现:

@OneToMany(mappedBy = "user")
private List<Role> role = new ArrayList<>();

我可以看到您具有从角色到用户的用户多对一关系。用户是否可以具有多个角色? 并且您需要在用户表中添加从用户到角色的关联。当用户可以具有许多角色时,可能会@ManyToMany

相关内容

最新更新