2015-08-22 2 views
2

Кто-нибудь знает, как установить имя ограничения для первичного ключа (PK_ [имя]), проверить (CK_ [Имя]), По умолчанию [DF_ [Имя]], Внешний ключ (Fk_ [Имя]), , уникальный .. с помощью аннотаций или XML-конфигурации, например я хочу, чтобы таблица ::::Hibernate - Constraint Name

CREATE TABLE ACCOUNT (
[ID] INT NOT NULL IDENTITY(1,1), 
[USERNAME] VARCHAR(50) NOT NULL, 
[PASSWORD] VARCHAR(50) NOT NULL, 
[EMAIL] VARCHAR(100) NOT NULL, 
[GENDER] INT NOT NULL , 
[ADDRESS] INT, 
[AGE] INT CONSTRAINT DF_tblAccount_Age DEFAULT 0, 
CONSTRAINT PK_tblAccount_ID PRIMARY KEY([ID]), 
CONSTRAINT UQ_tblAccount_Address UNIQUE(ADDRESS), 
CONSTRAINT FK_tblAccount_Gender FOREIGN KEY([GENDER]) REFERENCES GENDER([ID]), 
CONSTRAINT FK_tblAccount_Address FOREIGN KEY([ADDRESS]) REFERENCES ADDRESS([ID]) ON DELETE SET NULL, 
CONSTRAINT CK_tblAccount_Age CHECK ([AGE] > 0 AND [AGE] <100) 
) 

Перевести его в класс аннотаций или [имя] .hbm.xml, делает Hibernate поддержку, чтобы использовать имя ограничения или я должен изменять таблицы каждый раз, когда я создаю новый класс ... Я искал и нашел 0 результатов о именах ограничений!

Аннотация Класс Пример :::

@Id @GeneratedValue(strategy=GenerationType.AUTO) 
@Column(name="ID") 
// -->>Add Primary Key constraint Name Here !! ??? 
private int id; 

@Column(name="Name") 
private String name; 

@Column(name="Surname") 
private String surname; 

@Column(name="age") 
// -->>Add Check constraint Name Here !! ??? 
private String age; 

@OneToOne(cascade={CascadeType.ALL},fetch=FetchType.LAZY) 
@OnDelete(action=OnDeleteAction.CASCADE) 
@JoinColumn(name="Address" , referencedColumnName="id",nullable=false) 
// -->>Add Foreign Key constraint Name Here !! ??? 
private Address address; 

ответ

4

В JPA, вы можете сделать это на уровне класса, используя @Table свойства аннотаций, где вы указываете имена ограничений. Для первичного ключа id, нанесенного на столбец id:

@Table(uniqueConstraints = @UniqueConstraint(columnNames = "ID", name = "PERSONS_PK_CONSTRAINT")) 
Смежные вопросы