0

データベースに DayId を保存する必要があります。これは私がこれまでに持っているものです(これが日型を保存するための良いアプローチであるかどうかはわかりません)

public enum DayType {

    MONDAY(1),TUESDAY(2),WEDNESDAY(3),THURSDAY(4),FRIDAY(5),SATURDAY(6),SUNDAY(7);

エンティティが使用するのはAppointmentSlot.javaです

public class AppointmentSlot{

        ...

        @Column
        @Enumerated(EnumType.ORDINAL)
        private DayType dayId;
        ...
}

で永続化する前にdayIDを設定しましたappointmentSlot.setDayId(DayType.MONDAY);。しかし、私のデータベースでは、dayId列に格納されている値が 0 であることに気付きました。なぜ 1 として格納されなかったのですか?

4

3 に答える 3

3

EnumType.ORDINALjavadocに注意してください

列挙型のプロパティまたはフィールドを整数として永続化します。

これは、 のordinal()値を使用enumしてデータベースに格納することを意味します。これは通常enum、リスト内の の位置に関係しています。MONDAYが最初なのでordinal()0です。

enumHibernate にカスタムのカスタム フィールドをテーブルにマップさせる直接的な方法はわかりません。ただし、それを行う意味はありません。ordinal()Hibernate は、または のString値を使用して前後にマップできますenum結局のところ、それらは定数です。

于 2013-10-10T17:39:01.850 に答える
2

と定義EnumType.ORDINALすることもできますEnumType.String

于 2013-10-10T17:39:30.290 に答える