【问题标题】:Putting unique constraint on multiple fields对多个字段设置唯一约束
【发布时间】:2013-04-30 09:15:38
【问题描述】:

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

@Entity
public Foo {
    @Id
    private Long id;

    private String name;

    private String type;

    ...
}

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

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

【问题讨论】:

  • 您需要查看约束条件。 This should answer your question.
  • 基本上让它们一起独一无二
  • @UniqueConstraint,是的。
  • 好的,这就是答案——很遗憾我不能接受评论,所以把它作为答案,我会接受的。谢谢!
  • 我在下面添加了一个答案,您可能想查看更多信息。

标签: java jpa jpa-2.0 openjpa


【解决方案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 @UniqueConstraint.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2011-01-31
    • 2022-09-30
    • 1970-01-01
    • 2011-09-10
    • 2014-07-11
    • 1970-01-01
    相关资源
    最近更新 更多