3

Hibernateのhbm2ddlとMySQLで深刻な問題が発生しています。Hibernateは、次のように、OneToManyアソシエーションのフィールドの1つに一意のインデックスを体系的に作成します。

画面キャプチャ

意味のないフィールドの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;
}

誰かがこの動作を防ぐ方法を教えてもらえますか?

4

1 に答える 1

3

それは完全に理にかなっています-それはそれが機能するはずのように正確に機能します。テーブルは、エンティティadvertisement_day_to_time_slots間の結合テーブルです。関連付けは1対多の一方向であるため、これらのエンティティ間の関係は結合テーブルを使用して構築されます。AdvertisementDayToTimeSlot

各DayToTimeSlotは1つのアドバタイズメントエンティティにのみ接続できるため、この結合テーブルにはday_to_time_slot列に一意の制約があります。OneToManyの逆はManyToOneです。1つのアドバタイズメントを多くのDayToTimeSlotエンティティに接続できますが、1つのDayToTimeSlotは1つのアドバタイズメントにのみ関連付けられます。このような制限が望ましくない場合は、OneToManyの代わりに@ManyToManyアソシエーションを使用する必要があります。

于 2013-03-01T19:06:17.920 に答える