Как ограничить вставку дочерней таблицы при сохранении родительской таблицы в сопоставлении @ManyToOne? - PullRequest
0 голосов
/ 20 февраля 2020

Новые для весны данные JPA. У меня есть два класса моделей Party и PartyCategory (оба расширены до класса DataModelEntity).

Когда я передаю идентификатор для Partycategory в запросе json, он изменяется только из-за одной новой строки данных, добавленной в таблицу PartyCategory при создании / сохранение новой партии.

Я ожидаю, что таблица PartyCategory не должна обновляться. В таблице Party происходит только обновление. Похоже на проблему с отображением. Любые ссылки / документы также будут полезны.

Json Запрос:

{

    "name": "Party A",
    "description": "Very Good ..!!!",
    "category": {
        "ID": 1
    }

Json Ответ:

{
    "name": "Party A",
    "description": "Very Good ..!!!",
    "category": {
        "labelAr": null,
        "labelEn": null,
        "id": 3     (returned id also should be 1 instead of 3 what I am passing in request)
    }

@Entity
@Table(name = "PARTY")
public class Party extends DataModelEntity {

    private String name;
    private String description;
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "category_id")

     ...getter and setters...


@Entity
@Table(name = "PARTY_CATEGORY")
public class PartyCategory extends DataModelEntity {

}

@MappedSuperclass
public class DataModelEntity{

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer ID;
    @ColumnDefault("0")
    @Column(name = "RETIRED")
    private Boolean retired = false;
    @Column(name = "RETIRED_DATE")
    @Temporal(TemporalType.TIMESTAMP)
    private Date retiredDate;
    @Column(name = "RETIRED_BY_UDBID")
    private Number retiredByUDBID;


   setter and getters...

Rest Controller:

 @PostMapping(value = "/party/save")
    public ResponseEntity saveParty(@RequestBody PartyRequest partyRequest) {

            PartyResponse partyResponse = partyService.saveParty(partyRequest);
            return ResponseEntity.ok(partyResponse);

    }

Service:

@Override
    public PartyResponse saveParty(PartyRequest partyRequest) {
        Party party= new Party();
        party.setName(partyRequest.getName());
        party.setDescription(partyRequest.getDescription());
        party.setCategory(partyRequest.getCategory());

        Party party1= partyRepository.save(party);
        PartyResponse partyResponse = modelMapper.map(party1, PartyResponse.class);
        return partyResponse;
...