Play Framework [1.2.4]: уникальные ограничения для объекта
Я использую playframwork с mySQL для своего веб-приложения. У меня есть таблица, которая требует 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 - это разные сущности, связанные с сущностью Table.
Когда я пытаюсь вставить данные с повторяющимися значениями "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 вручную на столе?
Пожалуйста, помогите мне понять, если мне что-то не хватает в приведенной выше реализации
Спасибо, Картик
1 ответ
Если таблица не создана JPA, да, вам придется вручную создать уникальные ограничения, чтобы они вступили в силу.
Если таблица не существует, JPA должна создать для вас ограничение.
JPA не создает ограничение для уже существующей таблицы.