2015-08-22 34 views
2

有谁知道如何设置主键(PK_ [name]),check(CK_ [Name]),Default [DF_ [Name]],Foreign Key(Fk_ [Name])的约束名称独特.. 通过使用注释或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, 不休眠支持使用约束名称或者我必须改变表 每次我创建一个新的类... 我搜索了,我发现约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"))