当前位置: 首页 > 知识库问答 >
问题:

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

艾焕
2023-03-14

我遇到了一个问题,@ManyToMore集合没有在数据加载时填充。我尝试了FetchType.LAZY和FetchType.EAGER,结果没有变化。

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

用户 [userId=2,名字=阿贾伊,姓氏=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

}

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

共有1个答案

吴缪文
2023-03-14

你可以试试这个 -

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

在这里我添加了

    < li>cascade = CascadeType。所有 < Li > catalog = " " PLATFORM _ PROD _ IOT \ " "而不是schema = " \ " PLATFORM _ PROD _ IOT \ " " < li >在@JoinColumn中,nullable = false,updatable = false

还发现了一个相关的集合,没有在多对多关系中填充。

 类似资料:
  • 这可能不是最好的问题,但我注意到有2个Spring JPA用于Spring Boot。他们有什么不同。目前,我正在尝试将SpringBoot1.5.3项目与Hibernate一起设置。我记得我之前用spring-boot-starter-data-jpa用JPA设置了Springboot。 我看到的大多数在线示例以及starter.spring.io都为spring JPA提供了以下依赖项。 但是

  • 问题内容: 我有实体和 我可以按用户实体获得所有测试: 但是我可以使用哪个查询查找所有测试? 问题答案: 以下方法签名将使你想要: 这是使用Spring Data JPA 的属性表达式功能。签名将转换为。请注意,这将对给定的用户名执行完全匹配。

  • null 我想知道这三者之间的区别。尝试搜索在线文档,其中说这三个几乎与spring数据有关。如何化解困惑? 在这里,我还发现了另一个依赖项spring-boot-starter-web-services。我认为它同时支持SOAP和REST。这只是我的假设,我在等待一个解释

  • 我试图存储一个manytomany关系,但它没有存储关系。 下面的代码生成了3个表。 这是我发送到服务器的JSON: {“abbreviatedsequence”:“xdf”,“medals”:[{“name”:“purple”,“id”:1},{“name”:“red”,“id”:2}],“sequence”:“xdfree”,“name”:“savier”} java

  • 本文向大家介绍Spring Boot整合Spring Data Jpa代码实例,包括了Spring Boot整合Spring Data Jpa代码实例的使用技巧和注意事项,需要的朋友参考一下 一、Spring Data Jpa的简介 spring data:其实就是spring 提供的一个操作数据的框架。而spring data JPA 只是spring data 框架下的一个基于JPA标准操作数