Java 弹簧启动启动器数据-jpa@ManyToMany集合未填充

Java 弹簧启动启动器数据-jpa@ManyToMany集合未填充,java,spring-boot,jpa,spring-boot-jpa,Java,Spring Boot,Jpa,Spring Boot Jpa,我发现@ManyToMany集合在数据加载时未填充有问题。我尝试了FetchType.LAZY和FetchType.EAGER,结果没有变化 打印用户对象时,角色的集合对象为空 用户[userId=2,firstName=Ajay,lastName=C,email=admin。demo@gmail.com,密码=12345,角色=[] 还尝试添加引用列。但不起作用 请协助 用户和角色实体如下 @Entity @Table(name = "\"USER\"", schema = "\"PLATFO

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

打印用户对象时,角色的集合对象为空

用户[userId=2,firstName=Ajay,lastName=C,email=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

}

你可以试试这个-

@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;
}
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinTable(name=“\”用户\角色\映射\”,catalog=“\”平台\产品\物联网\”,JointColumns={
@JoinColumn(name=“\”USER\u ID\”,null=false,updateable=false)},
inverseJoinColumns={@JoinColumn(name=“\”角色\u ID\”,
nullable=false,updateable=false)})
私有集角色=新HashSet();
公共集getRoles(){
返回角色;
}
公共无效集合角色(集合角色){
this.roles=角色;
}
我在这里补充说

  • cascade=CascadeType.ALL
  • catalog=“\”平台产品物联网\”而不是schema=“\”平台产品物联网\”
  • @JoinColumn中的nullable=false,updateable=false
  • 还发现了一个相关的-

    你能粘贴你的用户实体和角色实体吗?谢谢你的回复。它也给出了与上述相同的结果。
    @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;
    }