【发布时间】:2017-12-26 21:04:11
【问题描述】:
如何在唯一约束中包含引用的表列?我想为 toEmail、receipt.receiptSeries 和 receipt.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"})})
不能选择使用带有receiptSeries 和receiptNum 的复合主键作为收据。
【问题讨论】:
-
你可以试试
@Column(name = "TO_EMAIL",unique=true)假设这个post 可能对你有帮助 -
@RajithPemabandu 是的,但这会使
TO_EMAIL列在SURVEY表上是唯一的。在我的问题中,可能有不止一个SURVEY具有相同的电子邮件,但不是相同的RECEIPT_SERIES/RECEIPT_NUM组合