Связь между таблицами не сохраняется при первом запуске - PullRequest
0 голосов
/ 18 октября 2018

Итак, у меня есть эта модель:

@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
public class OrderResponse {

    @Id
    private int id;

    private String referenceNumber;
    private String createdDate;
    private String modifiedDate;
    private double totalPrice;

    @Embedded
    private CollectionResponse lines;

И:

@JsonIgnoreProperties(ignoreUnknown = true)
@Embeddable
public class CollectionResponse {

    @OneToMany(cascade = CascadeType.ALL)
    private Collection<OrderLineResponse> items;

По сути, класс CollectionRespone представляет собой просто отображение одного OrderResponse на несколько OrderLineResponses.Я получаю это отношение от внешнего API в формате JSON, и я хотел бы, по возможности, избежать путаницы с форматом ввода, поэтому я не просто отображаю его напрямую из OrderResponse в OrderLineResponse.

текущая настройка работает в основном нормально, с правильными таблицами, которые создаются и заполняютсяТаблица для ответов на заказ, одна для OrdeLineResponses и реляционная таблица.Дело в том, что реляционная таблица по какой-то причине заполняется не при первом вызове моего метода, который должен быть сохранен в нем, а всегда при последующих вызовах.

Мой метод выглядит следующим образом.

public void addOrdersFromTo(String from, String to, int offset) throws Exception {
    MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
    params.add("start", from);
    params.add("end", to);
    params.add("include", "lines");
    params.add("offset", Integer.toString(offset));

    URI url = buildUrl("/admin/WEBAPI/v2/orders", params, uriComponentsBuilder);

    JsonNode jsonNode = restTemplate.getForObject(url, JsonNode.class);

    ObjectMapper jsonObjectMapper = new ObjectMapper();
    Collection<OrderResponse> orderResponses = Arrays.asList(jsonObjectMapper.treeToValue(jsonNode.get("items"), OrderResponse[].class));

    orderResponseRepository.saveAll(orderResponses);

РЕДАКТИРОВАТЬ: Это моя сущность OrderLineResponse, без методов получения и установки.

@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
public class OrderLineResponse {

    @Id
    private int id;

    private String productNumber;
    private String productName;
    private int quantity;
    private double unitPrice;
    private double totalPrice;

    public OrderLineResponse() {
    }

    public OrderLineResponse(int id, String productNumber, String 
productName, int quantity, double unitPrice, double totalPrice) {
        this.id = id;
        this.productNumber = productNumber;
        this.productName = productName;
        this.quantity = quantity;
        this.unitPrice = unitPrice;
        this.totalPrice = totalPrice;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...