Java 如何通过spring数据获取@ManyToMany负载的select?

Java 如何通过spring数据获取@ManyToMany负载的select?,java,spring,postgresql,spring-data,many-to-many,Java,Spring,Postgresql,Spring Data,Many To Many,我尝试通过auth的@manytomy加载用户的角色和user实体,但我得到了异常 ERROR: column user0_.role_id does not exist 我刚开始学习spring数据。请帮我解决这个问题。多谢各位 用户实体: @Entity(name = "users") public class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENT

我尝试通过auth的
@manytomy
加载用户的角色和
user
实体,但我得到了异常

ERROR: column user0_.role_id does not exist
我刚开始学习spring数据。请帮我解决这个问题。多谢各位

用户实体:

@Entity(name = "users")
public class User implements UserDetails {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    @Column(name = "role_id")
    private int roleId;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "user_id_role_id"
            ,
            joinColumns = {
                    @JoinColumn(name = "user_id",
                            nullable = false,
                            updatable = false)
            },
            inverseJoinColumns = {
                    @JoinColumn(name = "role_id",
                            nullable = false,
                            updatable = false)
            }
    )
    private List<Role> authorities;

    @Column(name = "account_non_expired")
    private boolean accountNonExpired;

    @Column(name = "account_non_locked")
    private boolean accountNonLocked;

    @Column(name = "credentials_non_expired")
    private boolean credentialsNonExpired;

    @Column(name = "enabled")
    private boolean enabled;
...
我的PostgreSQL架构:

CREATE TABLE IF NOT EXISTS user_role (
  id   SERIAL PRIMARY KEY,
  role VARCHAR(10) NOT NULL
);

CREATE TABLE IF NOT EXISTS users (
  id                      SERIAL PRIMARY KEY,
  username                VARCHAR(20) UNIQUE NOT NULL,
  password                VARCHAR(20) UNIQUE NOT NULL,
  account_non_expired     BOOLEAN            NOT NULL DEFAULT TRUE,
  account_non_locked      BOOLEAN            NOT NULL DEFAULT TRUE,
  credentials_non_expired BOOLEAN            NOT NULL DEFAULT TRUE,
  enabled                 BOOLEAN            NOT NULL DEFAULT TRUE
);

CREATE TABLE user_id_role_id (
  id      SERIAL PRIMARY KEY,
  user_id INTEGER NOT NULL,
  role_id INTEGER NOT NULL,
  FOREIGN KEY (role_id) REFERENCES user_role (id),
  FOREIGN KEY (user_id) REFERENCES users (id)
);

错误指示您在表用户中没有属性角色\u id。 您在实体中拥有此属性:

@Column(name = "role_id")
private int roleId;
但在创建表时:

CREATE TABLE IF NOT EXISTS users (
  id                      SERIAL PRIMARY KEY,
  username                VARCHAR(20) UNIQUE NOT NULL,
  password                VARCHAR(20) UNIQUE NOT NULL,
  account_non_expired     BOOLEAN            NOT NULL DEFAULT TRUE,
  account_non_locked      BOOLEAN            NOT NULL DEFAULT TRUE,
  credentials_non_expired BOOLEAN            NOT NULL DEFAULT TRUE,
  enabled                 BOOLEAN            NOT NULL DEFAULT TRUE
);
您没有属性角色\u id


只需从用户实体中删除属性roleId,它就可以工作:)

错误表明用户表中没有属性role\u id。 您在实体中拥有此属性:

@Column(name = "role_id")
private int roleId;
但在创建表时:

CREATE TABLE IF NOT EXISTS users (
  id                      SERIAL PRIMARY KEY,
  username                VARCHAR(20) UNIQUE NOT NULL,
  password                VARCHAR(20) UNIQUE NOT NULL,
  account_non_expired     BOOLEAN            NOT NULL DEFAULT TRUE,
  account_non_locked      BOOLEAN            NOT NULL DEFAULT TRUE,
  credentials_non_expired BOOLEAN            NOT NULL DEFAULT TRUE,
  enabled                 BOOLEAN            NOT NULL DEFAULT TRUE
);
您没有属性角色\u id


只要从用户实体中删除属性roleId,它就会工作:)

看起来我的大脑有些过载。非常感谢。这是最好的答案:)看起来我的大脑有些超负荷了。非常感谢。这是最好的答案:)