我遇到了Hibernate的hbm2ddl和MySQL的一个严重问题: Hibernate系统地为我的OneToMany关联的一个字段创建一个唯一的索引,如下所示:
请注意, UQ 框已检查day_to_time_slots
字段,这对我们来说没有任何意义......
以下是Advertisement
实体中的关系:
@OneToMany
private List<DayToTimeSlot> dayToTimeSlots;
以下是DayToTimeSlot
实体:
@RooJavaBean
@RooToString
@RooEquals
@RooJpaEntity
@Entity
public class DayToTimeSlot {
@NotNull(groups = { Default.class, Validation.AdvertisementCreation.class })
@Enumerated
private Day day;
@NotNull(groups = { Default.class, Validation.AdvertisementCreation.class })
@Enumerated
private TimeSlot timeSlot;
}
有谁能告诉我如何防止这种行为?
答案 0 :(得分:3)
这非常有意义 - 它的工作原理完全正常。表advertisement_day_to_time_slots
是Advertisement
和DayToTimeSlot
个实体之间的联接表。这些实体之间的关系是使用连接表构建的,因为关联是单向一对多的。
此连接表在day_to_time_slot列中具有唯一约束,因为每个DayToTimeSlot只能连接到一个广告权限。 OneToMany的反转是ManyToOne。 One Advertisement可以连接到许多DayToTimeSlot实体,但是一个DayToTimeSlot只与一个Advertisement相关联。如果不首选此类限制,则应使用@ManyToMany关联而不是OneToMany。