Как начать многостолбцовое ограничение с аннотаций JPA?

Я пытаюсь представить мультиключевое ограничение на JPA-отображенный объект:

public class InventoryItem {
    @Id
    private Long id;

    @Version 
    private Long version;

    @ManyToOne
    @JoinColumn("productId")
    private Product product;

    @Column(nullable=false);
    private long serial;
}

В основном (продукт, последовательный), пара должна быть уникальной, но я только нашел способ сказать, что последовательный должно быть уникальным. Это, очевидно, не хорошая идея, так как различные продукты могли бы иметь те же порядковые номера.

Существует ли способ генерировать это ограничение через JPA, или я вынужден вручную создать его к DB?

79
задан plouh 5 May 2010 в 10:46
поделиться

1 ответ

Вы можете объявлять уникальные ограничения с помощью аннотации @Table (uniqueConstraints = ...) в вашем классе сущности, т.е.

@Entity
@Table(uniqueConstraints={
    @UniqueConstraint(columnNames = {"productId", "serial"})
}) 
public class InventoryItem {
    ...
}

Обратите внимание, что это не создает волшебным образом уникальное ограничение в базе данных, вам все равно нужен DDL для это должно быть создано. Но похоже, что вы используете какой-то автоматизированный инструмент для создания базы данных на основе определений сущностей JPA.

159
ответ дан 24 November 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: