Hibernate не сохраняет внешний ключ при вставке - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть три вложенных отображения один к одному ниже. Когда я сохраняю Purchase, ожидаемый результат - все сущности (включая PurhcaseLine и PurchaseProduct также сохраняются), а внешние ключи также заполняются. Я использую CascadeType.ALL, но в результате получается внешний ключ (purchase_id для PurchaseLine и purhcase_line_id для PurchaseProduct - null для базы данных. Я ожидал, что все внешние ключи заполнены.

В момент сохранения Purhcase все объекты не сохраняются в базе данных. Возможно ли сохранить все объекты в этом состоянии? Я что-то не так делаю?

Покупка. java

@Entity
@Table(name = "purchases")
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@Getter
@Setter
public class Purchase {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private UUID id;

    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "purchase", optional = false)
    @Setter(AccessLevel.NONE)
    private PurchaseLine purchaseLine;
}

Закупочная линия. java

@Entity
@Table(name = "purchase_lines")
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@Getter
@Setter
public class PurchaseLine

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private UUID id;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "purchase_id")
    private Purchase purchase;

    @OneToOne(mappedBy = "purchaseLine", cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
    private PurchaseProduct purchaseProduct;
}

Закупка товара. java

@Entity
@Table(name = "purhcase_products")
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@Getter
@Setter
public class PurhcaseProduct {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private UUID id;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "purhcase_line_id")
    private PurhcaseLine purhcaseLine;
}
...