SpringBoot JPA OneToMany возвращает пустую коллекцию - PullRequest
0 голосов
/ 25 июня 2019

Я изучаю аннотации SpringBoot JPA @OneToMany и @ManyToOne. Теперь ManyToOne работает, но OneToMany не работают, запрос возвращает пустую коллекцию.

Вот отношения двух сущностей: (Один) DetectUnit содержит (Много) Устройство

Столкнувшись с этой проблемой, я попытался изменить свойства @OneToMany у многих мужчин, но все еще не работает.

1. Device.java
//...
@ManyToOne(targetEntity=DetectUnit.class, fetch=FetchType.EAGER)
private DetectUnit detectUnit;
//...Getters, Setters


2. DetectUnit.java
//...
@OneToMany(targetEntity=Device.class, fetch=FetchType.EAGER) 
private List<Device> devices;
//...Getters, Setters

ManyToOne, сработало, вот результат запроса:

[ 
 ...
 {
        "id": 5,
        "no": "ML002",
        "name": "梅李镇2号机",
        "deployTime": "2015-01-12",
        "detectUnit": { //works
            "id": 2,
            "no": "002",
            "name": "梅李检测站",
            "devices": []
        }
  },
 ...
]

OneToMany, не работает, вот результат запроса:

[
    {
        "id": 1,
        "no": "001",
        "name": "碧溪检测站",
        "devices": [] //not work ,empty ?
    },
    {
        "id": 2,
        "no": "002",
        "name": "梅李检测站",
        "devices": [] //not work, empty ?
    }
]

Кто-нибудь сталкивался с такой же проблемой?

1 Ответ

1 голос
/ 26 июня 2019

Если у вас есть отношение ManyToOne, подобное этому:

@ManyToOne(targetEntity=DetectUnit.class, fetch= FetchType.EAGER)
private DetectUnit detectUnit;

Для OneToMany в DetectUnit вы указываете "mappedBy":

@OneToMany(mappedBy = "detectUnit", fetch= FetchType.EAGER)
private List<Device> devices;

В противном случае он создасттретья таблица, чтобы связать оба.

...