У меня есть три вложенных отображения один к одному ниже. Когда я сохраняю 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;
}