ManyToOne OneToMany двунаправленное: получение данных из справочной таблицы - PullRequest
0 голосов
/ 22 февраля 2019

Я хотел бы при публикации объекта вернуть данные из справочной таблицы отношения.

Отношение определяется следующим образом:

@Entity
@Table( name = "application")
public class Application {

    @Id
    @JsonIgnore
    private Long id;

    @ManyToOne
    @JoinColumn(name = "product_category")
    private ProductCategory productCategory;

    ...

}

И:

@Entity
@Table(name = "product_category")
public class ProductCategory {

    @Id
    @Column(name = "product_category_id")
    private Long productCategoryId;

    @Column(name = "description")
    private String description;

    @JsonIgnore
    @OneToMany(mappedBy = "productCategory")
    private Set<Application> applications;

    ...
}

Моя таблица product_category содержит следующие данные:

enter image description here

При публикации объекта Json со следующей структурой:

...
{
  "productCategory": "0"
}
...

Я хотел бы получить следующий вывод json:

...
"productCategory": {
    "productCategoryId": 0,
    "description": "Personal Loan"
},
...

Но вместо этого я получаю:

...
"productCategory": {
    "productCategoryId": 0,
    "description": null
},
...

Не могли бы вы посоветовать?

1 Ответ

0 голосов
/ 22 февраля 2019

В вашем вопросе не так много кода, но вы упомянули в комментарии, что вы возвращаете:

return applicationRepository.save(appRequest);

С другой стороны, вы не каскадно меняете родителя и потомка в отображении.:

@ManyToOne
@JoinColumn(name = "product_category")
private ProductCategory productCategory;

Я думаю, что изменение @ManyToOne на @ManyToOne(cascade=CascadeType.ALL) должно помочь.

Редактировать:

Если вы не можете изменить модель, просто верните свою сущность:

return applicationRepository.findById(id);

Таким образом, jpa не перезаписывает сущность при сохранении, она просто читает одну из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...