Spring Boot 多对多不检索Map的数据

uplii1fm  于 2022-12-13  发布在  Spring
关注(0)|答案(1)|浏览(138)

2.5.6 Spring Boot (无法挂载版本)
Profil.java

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@FieldDefaults(level = AccessLevel.PRIVATE)
@Table(name = "t_profil")
public class Profil {
...
...
    @ManyToMany(cascade =  {
            CascadeType.PERSIST,
            CascadeType.MERGE
        }, fetch = FetchType.LAZY)
    @JoinTable(
            name = "t_profils_fonctionnalites",
            joinColumns = { @JoinColumn(name = "profil_id") },
            inverseJoinColumns = { @JoinColumn(name = "fonctionnalite_id") }
    )
    public Set<Fonctionnalite> fonctionnalites  = new HashSet(); 
}

Fonctionnalite.java

@jakarta.persistence.Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@FieldDefaults(level = AccessLevel.PRIVATE)
@Table(name = "t_fonctionnalite")
public class Fonctionnalite {
...
...
    @ManyToMany(mappedBy = "fonctionnalites", fetch = FetchType.LAZY)
    private Set<Profil> profils   = new HashSet();

我启动项目,创建了中间表:“t_profils_fonctionnalites”我将数据插入此表:

profil fonctionnalite
1         1
1         2
2         1

控制器

...
...
return new ResponseEntity<>(profilDao.findAll(), HttpStatus.OK);

我得到的数据是:

[
    {
        "id": 1,
        "code": "CODEP1",
        "label": "defaut",
        "description": "defaut description1",
        "fonctionnalites": []      
    },
    {
        "id": 2,
        "code": "CODEP2",
        "label": "label2",
        "description": "description2",
        "fonctionnalites": []        
    },

“功能”:是空!为什么?

dxxyhpgq

dxxyhpgq1#

你的代码不完整,但我认为这是因为你的获取类型是懒惰的,你有两种方法
1-调用函数getter以获取函数列表

...
 ...
 List<Profil> profilList= profilDao.findAll()
 profilList.forEach(profil => {profil.getFonctionnalites()});

 return new ResponseEntity<>(profilList, HttpStatus.OK);

2-将获取类型更改为“渴望”

@ManyToMany(mappedBy = "fonctionnalites", fetch = FetchType.EAGER)
 private Set<Profil> profils   = new HashSet();

相关问题