Cześć, tak jak w temacie chciałbym dodać w aplikacji zabezpieczenie przed wrzuceniem zduplikowanego rekordu do bazy danych. Moja encja prezentuje się następująco:
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String bookId;
private String authorId;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "book_info_id")
private List<BookDetails> bookDetails;
}
Chciałbym, żeby nie dało się dodać książki jeśli takie same pola bookId
i authorId
znajdują się w już istniejącym rekordzie w bazie. Próbowałem zdefiniować uniqueConstraints
:
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "bookId", "authorId" }) })
i to rozwiązanie jak najbardziej działa, tylko ten constraint zakładany jest jedynie przy tworzeniu tabeli w bazie a ja chciałbym dodać to zabezpieczenie do istniejącej już tabeli. Próbowałem coś kombinować z composite key, ale nie wiem jak mogę poradzić sobie z polem id
, gdyż chciałbym, żeby zostało i wartość dalej była generowana wg, aktualnej strategii. Może moglibyście mi doradzić co mogę zrobić, żeby uzyskać zamierzony efekt?