Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 播放框架[1.2.4]:实体的唯一约束_Jpa_Playframework_Unique_Unique Constraint - Fatal编程技术网

Jpa 播放框架[1.2.4]:实体的唯一约束

Jpa 播放框架[1.2.4]:实体的唯一约束,jpa,playframework,unique,unique-constraint,Jpa,Playframework,Unique,Unique Constraint,我将playframwork与mySQL一起用于我的web应用程序。我有一个表,它在多个列上需要一个唯一的_约束 我的实体定义如下 package models; import java.util.Date; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; impor

我将playframwork与mySQL一起用于我的web应用程序。我有一个表,它在多个列上需要一个唯一的_约束

我的实体定义如下

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”值的数据时 如下所示,我没有得到任何错误。数据被很好地插入到 表(MySQL)

是否需要在表上手动创建唯一的_约束

请帮助我理解,如果我有任何遗漏在上面 实施

谢谢,
Karthik

如果表不是由JPA创建的,是的,您必须手动创建唯一的约束才能生效

如果表不预先存在,JPA应该为您创建约束

JPA不会在已经存在的表上创建约束

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();