2012-02-10 113 views
1

我正在爲我的web應用程序使用mySQL的playframwork。我有一個表需要在多個列上有unique_constraint。Play Framework [1.2.4]:實體的唯一約束條件

我有實體定義如下......

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; 

} 

列1和列2是與 表實體關係不同的實體。

當我嘗試插入具有重複的「col_1和col_2」值的數據如下所示 我沒有得到任何錯誤。數據在表格(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

回答

2

如果不是由JPA創建的表,是的,你必須手動創建他們受到影響的獨特約束。

如果該表不存在,JPA應爲您創建約束。

JPA不會在已存在的表上創建約束。