1

假设我有一个这样的实体:

@Entity
public Foo {
    @Id
    private Long id;

    private String name;

    private String type;

    ...
}

有没有办法表达名称和类型应该是唯一的?这意味着例如,您可以使用类型为“y”的名称“x”和类型为“z”的名称“x”,但不能使用类型为“y”的其他“x”。

@EmbeddedId 不起作用,因为名称可以稍后更改 - 但是类型在实体的整个生命周期中保持不变。

4

1 回答 1

2

@Table您可以在注释上为您的实体添加约束。在您的情况下,您希望使两个连接字段唯一。您将使用@UniqueConstraint注释。

@Entity
@Table(uniqueConstraints=
           @UniqueConstraint(columnNames = {"name", "type"}) 
public Foo {
    @Id
    private Long id;
    @Column
    private String name;
    @Column    
    private String type;

    ...
}

看看 javadoc 的@UniqueConstraint.

于 2013-05-06T15:19:41.847 回答