【发布时间】:2021-08-17 11:55:42
【问题描述】:
我目前对这种关系有疑问,我已经尝试了我在互联网上看到的所有内容。不过,我收到此错误:错误:列角色0_.user_id 不存在。
我有一个具有 Spring Security 的启动应用程序,我需要使用 PostgreSQL 数据库中的用户登录。
但我就是无法让用户和角色之间的关系发挥作用。
这里是实体类:
@Data
@Entity
@Table(name="user",schema = "public")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer id;
@Column(unique = true)
private String username;
private String password;
private boolean enabled;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
private List<Role> roles;
}
@Data
@Entity
@Table(name="role",schema = "public")
public class Role {
@Id
@Column(name="role_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@ManyToOne()
@JoinColumn(name ="user_id")
private User user;
}
数据库看起来不错,我查看了列名等。我不知道该怎么做才能摆脱这个错误。我有用户表和另一个名为角色的表,其中包括 id 和名称、2 个输入、USER 和 ADMIN...
似乎@JoinColumn 注释需要角色表中的一个附加列与@ManytoOne 关系,因为当我添加列时错误消失了,但是当我试图从每个用户那里获取角色时,我得到一个空列表。还设置了外键,从角色列到角色表中的 role_id 列。
【问题讨论】:
标签: java spring postgresql spring-boot spring-security