У меня есть связь между двумя классами, например:
Smartlist -> smartlistId` - это PK
AccountEmailing -> smartlistId FK, PK
В таблице AccountEmailing может отсутствовать исходная ссылочная запись, но позже в ней может быть запись
Я использую только хранилище таблиц smartlist
Я попытался cascade.ALL
, но получил нулевое значение в таблице идентификаторов FK
Я попробовал следующий код, который работает со следующей комбинацией,
исходные данные с smartlist
и AccountEmailing
Это работает Я получаю запись в обеих таблицах, но позже обновляю запись выдает ошибку, так как AccountEmailing уже имеет запись (CascadeType.PERSIST
позволяет только вставку, а не обновление для ребенка)
исходные данные со смарт-списком и без данных в AccountEmailing
означает, что это не создаст запись в AccountEmailing, но позже добавив запись, он создает оператор вставки для AccountEmailing, и со следующего раза он всегда обновляет
Я ищу решение, как я могу обновить свой класс, чтобы я мог выполнить CRUD для AccountEmailing:
public class Smartlist {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "smartlistId")
private Integer smartlistId;
@OneToOne( mappedBy = "smartlist", fetch = FetchType.LAZY, cascade = CascadeType.PERSIST, orphanRemoval = true)
private AccountEmailing accountEmailing;
}
@Entity
@Table(name = "account_emailing")
public class AccountEmailing implements Serializable {
@Id
@OneToOne
@JoinColumn(name = "smartlistId")
private Smartlist smartlist;
}