【发布时间】:2021-01-19 20:12:57
【问题描述】:
我是 Spring Boot 和 jpa 的新手,并创建了这个名为 user 的实体,该实体将 @OneToMany 映射到另一个角色表。当我启动项目时,除了角色之外的每一列都会出现。我不明白我在这里做错了什么。我的角色实体看起来像这样 -
角色
package com.userservice.usermanagement.models;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "roles")
public class Role2 {
/**
* Model for role with all the attributes
*/
@Id
@GeneratedValue
@Column(name = "role_id", nullable = false, length = 1024)
private int role_id;
@Column(name = "name", nullable = false, length = 1024)
private String name;
public Role2() {
}
public int getRole_id() {
return role_id;
}
public void setRole_id(int role_id) {
this.role_id = role_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
和用户
package com.userservice.usermanagement.models;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "users")
public class User2 {
/**
* User model
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, length = 1024)
private int id;
@Column(name = "username", nullable = false, length = 1024)
private String username;
@Column(name = "email", nullable = false, length = 1024)
private String email;
@Column(name = "password", nullable = false, length = 1024)
private String password;
@Column(name = "customername", nullable = false, length = 1024)
private String customername;
@Column(name = "customerid", nullable = false, length = 1024)
private String customerid;
@Column(name = "description", nullable = false, length = 1024)
private String description;
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name="user_role", joinColumns=@JoinColumn(name="id"), inverseJoinColumns=@JoinColumn(name="role_id"))
private Set<Role2> roles = new HashSet<>();;
public User2() {
}
public User2(String username, String email, String customername,String customerid,String description, String password) {
this.username = username;
this.email = email;
this.customername = customername;
this.customerid = customerid;
this.description = description;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
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 String getCustomername() {
return customername;
}
public void setCustomername(String customername) {
this.customername = customername;
}
public String getCustomerid() {
return customerid;
}
public void setCustomerid(String customerid) {
this.customerid = customerid;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Set<Role2> getRoles() {
return roles;
}
public void setRoles(Set<Role2> roles) {
this.roles = roles;
}
}
在用户中,如果我使用可连接和发布数据,其他所有内容都会显示,但 user_role 和角色为空。如果我删除可连接的列以在用户表本身中包含该列,则用户表中缺少角色列。有人能指出我正确的方向吗?
【问题讨论】:
-
OneToMany 表示例如角色将拥有用户的引用,这是你想要的吗?
-
您好宏,感谢您回复我想要的是一个用户可以拥有多个角色。我不确定我是否完全理解您评论中的参考部分
-
好的,角色属于一个用户?
-
是的,该角色属于一个用户
-
如果是去掉JoinTable的情况,在角色表中看不到user_id?
标签: spring-boot jpa