在将 Map 和 @ElementCollection 与休眠一起使用时指定外键约束名称
我有一个字段的奇异映射:
@ElementCollection
@CollectionTable(name = "studentGradeLevel", joinColumns = @JoinColumn(name = "studentId"))
@MapKeyJoinColumn(name = "schoolYearId")
@Column(name = "gradeLevel", nullable = false)
@ForeignKey(name = "fkStudentGrade2Student")
private Map<SchoolYear, GradeLevel> gradeLevels;
SchoolYear是一个实体,GradeLevel是一个枚举。
我正在使用休眠工具为架构生成DDL。生成的架构如下:
create table studentGradeLevel (
studentId numeric(19,0) not null,
gradeLevel int not null,
schoolYearId int not null,
primary key (studentId, schoolYearId)
);
alter table studentGradeLevel
add constraint FK1BCA4A883A97C498
foreign key (schoolYearId)
references schoolYear;
alter table studentGradeLevel
add constraint fkStudentGrade2Student
foreign key (studentId)
references student;
问题是,我似乎无法更改集合表和用作映射键的实体的表之间的外键的约束名称。
我使用@ForeignKey为@OneToMany,@ManyToMany和其他@ElementCollections指定约束名称,没有问题。我尝试过@ForiegnKey的“inverseName”属性,但它似乎被忽略了。@MapKeyJoinColumn似乎没有任何会影响此属性。
有谁知道是否有办法做到这一点?