我正在使用playframwork和mySQL作为我的Web应用程序。我有一个表,需要在多列上使用unique_constraint。
我将实体定义如下......
package models;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "table",
uniqueConstraints = { @UniqueConstraint(columnNames =
{ "col_1", "col_2" }) })
public class Table extends Model{
@ManyToOne
@JoinColumn(name = "col_1")
public Column1 col1;
@ManyToOne
@JoinColumn(name = "col_2")
public Column2 col2;
@ManyToOne
@JoinColumn(name = "col_3")
public Column3 col_3;
}
Column1和Column2是与之关系不同的不同实体 表实体。
当我尝试插入重复的数据" col_1和col_2"价值为 如下所示,我没有错误。数据插入正常 table(MySQL)。
Table table1 = new Table();
table1.col1 = new Column1("1");
table1.col2= new Column2("2);
table1.col3= new Column3("3");
table1.save();
Table table2 = new Table();
table2 .col1 = new Column1("1");
table2 .col2= new Column2("2);
table2 .col3= new Column3("3");
table2 .save();
我是否需要在桌面上手动创建unique_constraint?
如果我上面有任何遗漏,请帮助我理解 实施
谢谢, KARTHIK
答案 0 :(得分:2)
如果表格不是由JPA创建的,是的,您必须手动创建唯一的约束条件才能使它们生效。
如果表格不存在,JPA应为您创建约束。
JPA不会对现有表创建约束。