java - JPA 中复合键的唯一约束

标签 java hibernate jpa constraints composite-key

我有一个带有两个外键的实体,我也想将其用作约束 JPA中有没有办法定义一个约束,该约束只有在以下情况下才是唯一的: 重复相同的 FROM_CURRENCY_IDTO_CURRENCY_ID,但允许 if 值 FROM_CURRENCY_IDTO_CURRENCY_ID 的反转

@Entity
@Table(name="CURRENCY_CONVERSION")
public class CurrencyConversion extends BaseEntity {

    private static final long serialVersionUID = -2440725717151990999L;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "FROM_CURRENCY_ID")
    private Currency fromCurrencyId;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "TO_CURRENCY_ID")
    private Currency toCurrencyId;

    @Column(name = "CURRENCY_RATE", nullable = false)
    private Double rate;
    // getter setters

}

最佳答案

@Table注释添加唯一约束定义

@Table(
    uniqueConstraints=
        @UniqueConstraint(columnNames={"column_1", "column_2"})
)

关于java - JPA 中复合键的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42689594/

相关文章:

java - getConstructor(参数): java. lang.NoSuchMethodException 的概率:

java - 如何使用KeepAliveCache get(url,object)

java - org.hibernate.exception.ConstraintViolationException 删除

java - 高负载场景下DatabaseAccessor未连接

java - Java 中的原始 HTTP 1.1 请求实现未终止

java - 如何修复错误包 android.support.v7 不存在?

java - 为什么在 JPA 中使用 "select new"在 POJO 类中放置实体会导致 N+1 问题?

java - 如何动态管理多个数据源

java - 如何将 @ManyToMany 与同一个表上的两个列表一起使用

MYSQL:为 'comments' 列生成 ID 的完美方法