我使用MySQL / OPENJPA。我有一项任务是在其中一个表列中强加唯一性。从我看来,我可以通过两种方式做到这一点。
Alter Table <table name> ADD UNIQUE <column name>
OR
@Table(name="<table name>", uniqueConstraints=@Unique(columnNames="<column name>"))
哪种方式正确?或者可能同时使用两者?
答案 0 :(得分:1)
JPA注释将仅在生成新的db模式期间使用(因此,仅当您的persistence.xml具有ddl-generation create-tables或drop-and-create时)。 它不会影响现有表,也不会被JPA检查。
因此,如果您的数据库已经存在,则需要使用ALTER TABLE
答案 1 :(得分:0)
如果您使用休眠创建数据库,则可以添加注释,如果您手动管理,请使用alter table。
如果您必须管理生产中的迁移,我会考虑使用Liquibase,它允许您在版本控制系统中存储数据库更改的描述。