首页 > 解决方案 > JoinColumn / JoinTable 总是为空,为什么*?

问题描述

大家好,我有 2 个实体用户和角色。一个用户可以有很多角色,所以我做了一个

   @Entity
   @Table(name="ROLES")
   public class Roles {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "role_id")
private Long id;

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

@ManyToOne(fetch= FetchType.LAZY)
@JoinTable(name = "USER_ROLES",
joinColumns = {@JoinColumn(name = "USER_FK")},
inverseJoinColumns = {@JoinColumn(name = "ROLES_FK")}
        )
private User user;
}

以及一个引用与角色的 OneToMany 关系的用户类

@Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long user_id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email_id", unique=true, nullable = false)
private String emailId;
@Column(name = "created_at")
private String created_at;


@OneToMany(mappedBy = "user",cascade = CascadeType.MERGE, orphanRemoval = true,fetch=FetchType.LAZY)
private Set<Roles> roles = new HashSet<>();

public User() {
    
}

public User(String firstName, String lastName, String emailId) {
    super();
    this.firstName = firstName;
    this.lastName = lastName;
    this.emailId = emailId;
}

}

但是当我像这样通过邮递员发送 JSON 请求时。

{
"firstName":"Isic1",
"lastName":"edib11",
"emailId":"edib.isic@gmail.com",
"roles":[{"name":"write"}, {"name":"read"}]

}

User 表已正确填充,但 user_roles 表为空?那么我在做什么错任何想法=

标签: spring-bootrest

解决方案


推荐阅读