如何正确地设置一个独特的数据库约束 - 使用Alter Table或JPA注释?

时间:2015-03-02 20:36:55

标签: java mysql jpa openjpa

我使用MySQL / OPENJPA。我有一项任务是在其中一个表列中强加唯一性。从我看来,我可以通过两种方式做到这一点。

  1. 使用Alter Table <table name> ADD UNIQUE <column name>
  2. OR

    1. 使用JPA注释:@Table(name="<table name>", uniqueConstraints=@Unique(columnNames="<column name>"))
    2. 哪种方式正确?或者可能同时使用两者?

2 个答案:

答案 0 :(得分:1)

JPA注释将仅在生成新的db模式期间使用(因此,仅当您的persistence.xml具有ddl-generation create-tables或drop-and-create时)。 它不会影响现有表,也不会被JPA检查。

因此,如果您的数据库已经存在,则需要使用ALTER TABLE

答案 1 :(得分:0)

如果您使用休眠创建数据库,则可以添加注释,如果您手动管理,请使用alter table。

如果您必须管理生产中的迁移,我会考虑使用Liquibase,它允许您在版本控制系统中存储数据库更改的描述。