java liquidbase和实体定义中约束的重复

ctzwtxfj  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(126)

我注意到在我的项目中,一些复合约束是在一个liquidbase中设置的,例如
constraint importer_ukey unique (name, country_id, is_importer, is_manufacturer)
但随后它们在@Table注解的实体定义中重复

@Table(uniqueConstraints = {@UniqueConstraint(name = "importer_ukey",
                columnNames = {"name", "country_id", "is_importer", "is_manufacturer"})})

实体中uniqueConstraint的重复是否有积极意义?

n6lpvg4x

n6lpvg4x1#

除了基于JPA注解创建模式之外,JPA提供程序还需要在运行时正确地对INSERT、UPDATE和DELETE语句进行排序。
唯一约束确保列或列组合中的数据对于每一行都是唯一的。例如,表的主键用作隐式唯一约束。在JPA中,您使用表注解中的UniqueConstraint注解数组表示其他唯一约束。您定义的唯一约束在表创建期间用于生成适当的数据库约束。也可以在运行时用于排序INSERT、UPDATE和DELETE语句。例如,假设字段F的列上有唯一约束。在同一事务中,您删除了对象A并持久化了新对象B,JPA运行时必须确保删除A的SQL在插入B的SQL之前发送到数据库,以避免违反唯一约束。
来源:https://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual/jpa_overview_mapping_unq.html
所以是的:这很重要。

相关问题