Saya mencoba memperkenalkan batasan multi-kunci pada entitas yang dipetakan JPA:
public class InventoryItem {
@Id
private Long id;
@Version
private Long version;
@ManyToOne
@JoinColumn("productId")
private Product product;
@Column(nullable=false);
private long serial;
}
Pada dasarnya pasangan (produk, serial) harus unik, tetapi saya hanya menemukan cara untuk mengatakan bahwa serial harus unik. Ini jelas bukan ide yang bagus karena produk yang berbeda mungkin memiliki nomor seri yang sama.
Apakah ada cara untuk menghasilkan batasan ini melalui JPA atau saya terpaksa membuatnya secara manual ke DB?
Seperti yang sudah dijawab, indeks multi-kolom dapat ditambahkan menggunakan
@Table
anotasi. Namun,columnNames
harus berupa nama kolom DB yang sebenarnya, bukan atribut kelasnya. Jadi, jika kolomnya seperti berikut:@Column(name="product_id") Long productId;
Maka
@Table
anotasinya akan seperti berikut@Table(uniqueConstraints= @UniqueConstraint(columnNames = {"product_id", "serial"})
sumber