gpt4 book ai didi

java - spring-boot-starter-data-jpa@ManyToMany 集合未填充

转载 作者:行者123 更新时间:2023-12-02 10:21:32 26 4
gpt4 key购买 nike

我遇到了 @ManyToMany 集合在数据加载时未填充的问题。我尝试过 FetchType.LAZY 和 FetchType.EAGER,结果没有任何变化。

当我打印用户对象时,角色集合对象为空。

用户 [userId=2、firstName=Ajay、lastName=C、电子邮件=admin.demo@gmail.com、密码=12345、角色=[]]

还尝试添加引用列。但没有成功。

请协助。

用户和角色实体如下。

@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;
}

这里我添加了

  1. cascade = CascadeType.ALL
  2. catalog = "\"PLATFORM_PROD_IOT\"" instead of schema = "\"PLATFORM_PROD_IOT\""
  3. nullable = false, updatable = false in @JoinColumn

还发现了相关的 - collection not populating in many to many relationship

关于java - spring-boot-starter-data-jpa@ManyToMany 集合未填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54313929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com