显示一对多连接

Show OneToMany connection

我试图显示日历条目类型的对象列表,但没有成功。我使用@OneToMany 和@ManyToOne 断言。如果我用 Postman 调用我的控制器,我“只会”看到我的用户,它也包含我的条目。我如何在不在存储库中进行额外查询的情况下显示此处的所有内容?

万年历:

@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private User user;

用户:

@JsonIgnore
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<KalenderEintraege> eintrage = new ArrayList<KalenderEintraege>();

后端(RestController):

@GetMapping("/InsertInto")
public void einfuegen() {

    User user = new User();
    user.setName("Ben");

    KalenderEintraege kalender = new KalenderEintraege();
    kalender.setBeschreibung("Test");
    kalender.setDatum(new Date());
    kalender.setUser(user);

    List<KalenderEintraege> listKalender = new ArrayList<KalenderEintraege>();

    listKalender.add(kalender);

    user.setEintrage(listKalender);

    userRepro.save(user);

}

@GetMapping("/All")
public List<User> getUser() {

    return (List<User>) userRepro.findAll();
}

两个方向都用 @JsonIgnore 注释,因此它不会显示关系数据,但无论如何都会查询它,请尝试在控制台中使用以下设置激活“show sql”:

// add these in property file and you can see generated sql
spring.jpa.show-sql: true
spring.jpa.properties.hibernate.format_sql=true

但是去掉两个@JsonIgnore会导致Whosebug报错,可以尝试@JsonIgnoreProperties注解解决:

@JsonIgnoreProperties("user") // your Table name
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<KalenderEintraege> eintrage = new ArrayList<KalenderEintraege>();


@JsonIgnoreProperties("KalenderEintraege") // your Table name
@ManyToOne
@JoinColumn(name = "user_id")
private User user;