Estou tentando introduzir uma restrição de várias chaves em uma entidade mapeada por JPA:
public class InventoryItem {
@Id
private Long id;
@Version
private Long version;
@ManyToOne
@JoinColumn("productId")
private Product product;
@Column(nullable=false);
private long serial;
}
Basicamente, o par (produto, serial) deve ser único, mas só encontrei uma maneira de dizer que o serial deve ser único. Obviamente, isso não é uma boa ideia, pois produtos diferentes podem ter os mesmos números de série.
Existe uma maneira de gerar essa restrição via JPA ou sou forçado a criá-la manualmente para o banco de dados?
Como já respondido, o índice de várias colunas pode ser adicionado usando
@Table
anotação. No entanto,columnNames
precisa ser o nome das colunas reais do banco de dados, não o atributo de classe. Portanto, se a coluna for assim:Então a
@Table
anotação deve ser como a seguintefonte