当前位置: 首页 > 知识库问答 >
问题:

Spring boot@JoinCulumn-ManyTone关系列不存在

盛琪
2023-03-14

我目前在这段关系中遇到了问题,我已经尝试了我在互联网上看到的一切。尽管如此,我还是得到了这个错误:error:column roles0\u0。用户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和name,2个输入,USER和ADMIN...

@JoinColumn注释似乎需要角色表中的一个附加列,即具有@ManytoOne关系的列,因为当我html" target="_blank">添加该列时,错误消失,但当我尝试从每个用户获取角色时,我会得到一个空列表。外键也被设置,从roles列到role表中的role\u id列。

共有2个答案

龙高超
2023-03-14

用户表:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.EAGER)
private List<Role> roles;

角色表:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
晁绍辉
2023-03-14

我是这样工作的:

@Entity
@Data
@Table(name = "users")
public class User{

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_roles", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
        inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "id")})
private List<Role> roles;

}

然后在角色中:

@Entity
@Table(name = "roles")
public class Role{

@ManyToMany(mappedBy = "roles", fetch = LAZY)
private List<User> users;

}

如果您对管理多对多关系的第三个表user\u roles(user\u id,role\u id)没有意见的话

 类似资料:
  • 我有表,我不会翻译数据库对象,因为ORM可能使用命名约定。 科雷托尔 当我尝试使用findById时,我得到:org.PostgreSQL L.util.psqlException:error:casavenda0_1_.id_anunciante列不存在提示:也许您是想引用“casavenda0_.id_anunciante”列。

  • 嗨,我有一个角色表和一个权限表,它有多对多的关系。我已经创建了下面链接中提到的实体 https://www.baeldung.com/jpa-多对多 角色实体 权限实体 我已经为每个实体创建了JPA存储库,并且正在尝试将权限保存给一个角色。我在表中已经有了一组/列表的权限,我正在尝试将它们映射到某个角色。我正在尝试使用spring JPA存储库执行下面的代码。 在执行我得到的代码时 org.hib

  • 我有以下课程: DBEntity.java 使用者JAVA 用户服务。JAVA UserRepository.java

  • 我正在学习postgresql,并用elephantsql制作这个表格: 但当我尝试插入到: 它返回:

  • 问题内容: 我正在尝试在PostgreSQL 8.4.2 DB上运行hibernate模式。每当我尝试运行一个简单的Java代码,例如: 我收到以下错误: 由于我将选项hibernate.show_sql选项设置为true,因此可以看到hibernate尝试运行以下SQL命令: 实际上,它至少应运行以下命令: 有谁知道我需要进行哪些更改才能使Hibernate为PostgreSQL生成正确的SQL

  • 此代码崩溃: 原因:组织。postgresql。util。PSQLException:错误:关系“订阅”不存在 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect Springjpa。数据库平台=组织。冬眠地方话PostgreSQL10方言Spring。jpa。冬眠ddl auto=创建拖放