0
我有一個java類中有一個數字標識和用戶名(自然主鍵)的類。休眠標註,如何定義兩個主鍵
我希望Id和用戶名是主鍵(未組合)。
Create table (
Int ID PK,
String Username PK,
String name,
String password
)
我該怎麼用java的hibernate annotations做到這一點?
我有一個java類中有一個數字標識和用戶名(自然主鍵)的類。休眠標註,如何定義兩個主鍵
我希望Id和用戶名是主鍵(未組合)。
Create table (
Int ID PK,
String Username PK,
String name,
String password
)
我該怎麼用java的hibernate annotations做到這一點?
在休眠中只能有一個主鍵(單個字段,複合鍵等)。主要原因是我知道的大多數數據庫只支持單個或複合主鍵。從您的描述中,您聽起來像是在尋找唯一的用戶名。爲此,您不需要將該字段定義爲主鍵列。相反,您可以爲該字段添加一個唯一約束。如果使用註解,那麼你將配置它類似於以下:
@Table(name="table",
uniqueConstraints = {@UniqueConstraint(columnNames={"username"})}
)
如果從Hibernate配置生成數據庫表,這將定義在表上的用戶名列的唯一約束,以及作爲ID主鍵。如果您手動創建數據庫方案,那麼您會希望自己將約束添加到數據庫。以下是Oracle的示例:
CREATE TABLE table
( id numeric(10) not null,
username varchar2(50) not null,
primary key (id),
CONSTRAINT username_unique UNIQUE (username)
);