Создание объекта @ManyToOne с использованием json - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь достичь отношения «многие к одному», когда станции принадлежат регионам.Как я могу добиться этого, используя REST для создания станции, просто передавая идентификатор региона на станции POST json, как показано на рисунке.

{
    "name": "New York",
    "code": "MGR",
    "active": "YES",
    "regionid": 1

}

Ниже мой контроллер.

@PostMapping("/station/create/")
public ResponseObject create(@Valid @RequestBody Station station){
    ResponseObject responseObject = new ResponseObject();
    responseObject.setSuccess(true);
    responseObject.setData(stationDao.save(station));
    responseObject.setMessage("Station created successfully");
    return responseObject;
}

Ниже моймодели.

@Entity
@Table(name = "regions")
@EntityListeners(AuditingEntityListener.class)
public class Region implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonProperty("regionID")
    private Long regionID;
    @JsonProperty("name")
    private String name;
    @JsonProperty("active")
    @Enumerated(EnumType.STRING)
    private YesNo active;
}





@Entity
@Table(name = "stations")
@EntityListeners(AuditingEntityListener.class)
public class Station implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonProperty("stationID")
    private Long stationID;

    @JsonManagedReference
    @ManyToOne
    @JsonProperty("regionID")
    @JoinColumn(name = "regionid", referencedColumnName = "regionid")
    private Region region;

    @JsonProperty("name")
    private String name;
    @JsonProperty("code")
    private String code;
    @JsonProperty("active")
    @Enumerated(EnumType.STRING)
    private YesNo active;
}

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Я понял, что мне не нужен @JsonManagedReference. Таким образом, мой код будет

    @ManyToOne
    @JsonProperty("regionID")
    @JoinColumn(name = "regionid", referencedColumnName = "regionID")
    private Region region;

И boommmm .......

0 голосов
/ 24 февраля 2019
@JoinColumn(name = "regionid", referencedColumnName = "regionid")
    private Region region;

referencedColumnName не существует в классе Regioin.Это будет regionID вместо regionid.

Попробуйте изменить ниже:

@JoinColumn(name = "regionid", referencedColumnName = "regionID")
        private Region region;
...