java - spring-boot-starter-data-jpa@ManyToMany 集合未填充
问题描述
我遇到了@ManyToMany 集合没有填充数据加载的问题。我试过 FetchType.LAZY 和 FetchType.EAGER,结果没有变化。
当我打印用户对象时,角色的集合对象为空。
用户 [userId=2, firstName=Ajay, lastName=C, email=admin.demo@gmail.com, password=12345, roles=[]]
还尝试通过添加引用的列。但没有奏效。
请协助。
用户和角色实体如下。
@Entity
@Table(name = "\"USER\"", schema = "\"PLATFORM_PROD_IOT\"", uniqueConstraints = {
@UniqueConstraint(columnNames = { "\"EMAIL_ID\"" }) })
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Size(min = 1, max = 50)
@Column(name = "\"USER_ID\"")
private Long userId;
@NotBlank
@Size(min = 3, max = 50)
@Column(name = "\"FIRST_NAME\"")
private String firstName;
@NotBlank
@Size(min = 3, max = 50)
@Column(name = "\"LAST_NAME\"")
private String lastName;
@NaturalId
@NotBlank
@Size(max = 50)
@Email
@Column(name = "\"EMAIL_ID\"")
private String email;
@NotBlank
@Size(min = 3, max = 100)
@Column(name = "\"PASSWORD\"")
private String password;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "\"USER_ROLE_MAPPING\"", schema = "\"\PLATFORM_PROD_IOT\"", joinColumns = @JoinColumn(name = "\"USER_ID\""), inverseJoinColumns = @JoinColumn(name = "\"ROLE_ID\""))
private Set<Role> roles = new HashSet<>();
//Getters and Setters
}
@Entity
@Table(name = "\"ROLE\"",schema="\"PLATFORM_PROD_IOT\"")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="\"ROLE_ID\"")
private Long roleId;
@Column(name="\"ROLE_NAME\"")
private RoleName name;
//Getters and Setters
}
解决方案
你可以试试这个——
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "\"USER_ROLE_MAPPING\"", catalog = "\"PLATFORM_PROD_IOT\"", joinColumns = {
@JoinColumn(name = "\"USER_ID\"", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "\"ROLE_ID\"",
nullable = false, updatable = false) })
private Set<Role> roles = new HashSet<>();
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
在这里我添加了
- 级联 = CascadeType.ALL
- 目录 = "\"PLATFORM_PROD_IOT\"" 而不是架构 = "\"PLATFORM_PROD_IOT\""
- 可空 = 假,可更新 = 假在 @JoinColumn
还发现了一个相关的 集合,没有填充多对多关系
推荐阅读
- reactjs - React Leaflet - 绘制贝塞尔曲线
- angular - 加载资源失败:net::ERR_SPDY_PROTOCOL_ERROR
- ios - WkWebView 如何管理输入类型文件启动的事件和窗口
- vba - ADODB 导入 .csv 更改数据类型
- amazon-aurora - 如何查看 aws aurora 模式中已使用和可用的总空间
- git - Git 错误,无法访问,错误设置证书验证位置
- spring - 自定义 Spring Boot Starter 库中读取当前属性并根据值设置新属性的最佳方式
- java - Java DateTime 在 Linux 中为空
- lua - 使用非整数键删除表
- jakarta-ee - 在 WSO2 迭代调解器上定义的这个 XPATH 表达式究竟是如何工作的?