Hibernate的hbm2ddl问题过度地创建了一个唯一的索引

时间:2013-03-01 18:08:37

标签: mysql hibernate jpa hbm2ddl unique-index

我遇到了Hibernate的hbm2ddl和MySQL的一个严重问题: Hibernate系统地为我的OneToMany关联的一个字段创建一个唯一的索引,如下所示:

screen capture

请注意, 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;
}

有谁能告诉我如何防止这种行为?

1 个答案:

答案 0 :(得分:3)

这非常有意义 - 它的工作原理完全正常。表advertisement_day_to_time_slotsAdvertisementDayToTimeSlot个实体之间的联接表。这些实体之间的关系是使用连接表构建的,因为关联是单向一对多的。

此连接表在day_to_time_slot列中具有唯一约束,因为每个DayToTimeSlot只能连接到一个广告权限。 OneToMany的反转是ManyToOne。 One Advertisement可以连接到许多DayToTimeSlot实体,但是一个DayToTimeSlot只与一个Advertisement相关联。如果不首选此类限制,则应使用@ManyToMany关联而不是OneToMany。