【问题标题】:How to use uniqueConstraint on referenced table column with JPA如何在 JPA 的引用表列上使用 uniqueConstraint
【发布时间】:2017-12-26 21:04:11
【问题描述】:

如何在唯一约束中包含引用的表列?我想为 toEmailreceipt.receiptSeriesreceipt.receiptNum 列的表调查创建唯一约束。

请查看以下实体:

收据

@Entity
@Table(name = "RECEIPT")
public class Receipt {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "ID")
  private Long id;

  @Column(name = "RECEIPT_SERIES")
  private String receiptSeries;

  @Column(name = "RECEIPT_NUM")
  private String receiptNum;
}

调查

@Entity
@Table(name = "SURVEY"}
public class Survey {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "ID")
  private Long id;

  @ManyToOne(optional = false)
  @JoinColumn(name = "RECEIPT_ID")
  private Receipt receipt;

  @Column(name = "TO_EMAIL")
  private String toEmail;
}

我尝试使用以下方法但没有成功:

@Table(name = "SURVEY", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"TO_EMAIL", "RECEIPT.RECEIPT_SERIES", "RECEIPT.RECEIPT_NUM"})})

不能选择使用带有receiptSeriesreceiptNum 的复合主键作为收据。

【问题讨论】:

  • 你可以试试@Column(name = "TO_EMAIL",unique=true) 假设这个post 可能对你有帮助
  • @RajithPemabandu 是的,但这会使TO_EMAIL 列在SURVEY 表上是唯一的。在我的问题中,可能有不止一个 SURVEY 具有相同的电子邮件,但不是相同的 RECEIPT_SERIES / RECEIPT_NUM 组合

标签: java spring jpa


【解决方案1】:

试试这样的

@Table(name="notification_status", uniqueConstraints= 
       arrayOf(UniqueConstraint(columnNames= arrayOf("external_user_id",
                                                     "external_organization_id",  
                                                     "notification_id"))))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多