我正在使用hibernate工具(版本4.3)中的hbm2ddl来生成我的ddl脚本。外键的名称是生成的,例如, FK_14n63malgiroxq6j6efy53skl
。
有没有办法定义名称,例如FK_DOMAIN_EVENT_ID
?我尝试使用@PrimaryKeyJoinColumn
和@ForeignKey
,但没有成功。
这是基础实体:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class DomainEvent {
@Id
private UUID id;
private Calendar occuredOn;
}
这里是扩展类:
@Entity
@PrimaryKeyJoinColumn(foreignKey = @ForeignKey(name = "FK_DOMAIN_EVENT_ID"))
public class OrderSubmittedEvent extends DomainEvent {
private String orderId;
}
此处生成的输出包含生成的外键FK_14n63malgiroxq6j6efy53skl
:
create table domain_event (
id binary(255) not null,
occured_on timestamp,
primary key (id)
);
create table order_submitted_event (
order_id varchar(255),
id binary(255) not null,
primary key (id)
);
alter table order_submitted_event
add constraint FK_14n63malgiroxq6j6efy53skl
foreign key (id)
references domain_event;