gpt4 book ai didi

java - Hibernate 给出无法确定类型错误

转载 作者:行者123 更新时间:2023-12-02 02:09:08 26 4
gpt4 key购买 nike

我有一个 Roles 表,其中包含 id 和角色名称,以及一个 users 表,其中包含 role_id。我想加入这些,但收到错误无法确定类型:com.aon04.backend.models.Role,表:用户,列:[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 应该具有以下集合: 角色您没有将您的角色映射到用户中,请通过添加双向关系来实现:

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

关于java - Hibernate 给出无法确定类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50294093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com