有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在多个字段上设置唯一约束

假设我有这样一个实体:

@Entity
public Foo {
    @Id
    private Long id;

    private String name;

    private String type;

    ...
}

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

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


共 (1) 个答案

  1. # 1 楼答案

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

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

    Take a look at the javadoc for ^{}