我在java中有一个具有数字ID和用户名(自然主键)的类。
我希望Id和用户名是主键(未合并)。
Create table (
Int ID PK,
String Username PK,
String name,
String password
)
如何使用Java的hibernate注释?
答案 0 :(得分:2)
hibernate中只能有一个主键(单个字段,复合键等)。主要原因是我所知道的大多数数据库只支持单个或复合主键。从您的描述中可以看出,您实际上只是在寻找唯一的用户名。为此,您无需将字段定义为主键列。相反,您可以为该字段添加唯一约束。如果使用Annotations,那么您可以将其配置为类似于以下内容:
@Table(name="table",
uniqueConstraints = {@UniqueConstraint(columnNames={"username"})}
)
如果从hibernate配置生成db表,则会在表中的username列以及id主键上定义唯一约束。如果要手动创建数据库方案,则需要自己将约束添加到数据库。以下是Oracle的示例:
CREATE TABLE table
( id numeric(10) not null,
username varchar2(50) not null,
primary key (id),
CONSTRAINT username_unique UNIQUE (username)
);