0

私のJavaアプリケーションでは、1つのフィールドを持つValue Object(Java Bean)を作成しています

@Entity
@Table(name="EC_TIMETABLE")
    public class TimetableVO
{
----//@id and some other column and variables
----

private List<WeekdayType> repeatDays;//Their is No column in Database
------
------//setter and getter method
}

WeekdayTypeは列挙型クラスであると聞く

public static enum WeekdayType {
    MONDAY(Calendar.MONDAY), TUESDAY(Calendar.TUESDAY), WEDNESDAY(
            Calendar.WEDNESDAY), THURSDAY(Calendar.THURSDAY), FRIDAY(
            Calendar.FRIDAY), SATURDAY(Calendar.SATURDAY), SUNDAY(
            Calendar.SUNDAY);

    private int day;

    private WeekdayType(int day) {
        this.day = day;
    }

TimetableVO getRepeatedDays()別のクラスを使用しています。

サーバーを起動するとエラーが発生しました

org.hibernate.MappingException: Could not determine type for: java.util.List, at table: EC_TIMETABLE, for columns: [org.hibernate.mapping.Column(repeatDays)]

データベースや構文の問題で必要な列もそうです.....よろしくお願いします。

4

3 に答える 3

1

いいえ、必要がない場合は、このフィールドの列をデータベースに含める必要はありません。

永続化したくない場合は、@Transientアノテーションで一時的なものとしてマークできます。

@Transient
private List<WeekdayType> repeatDays;
于 2012-12-10T09:03:14.043 に答える
0

コレクションを一時的なものとしてマークすると、これは永続化されたアイテムではないことをHibernateに指示します。このようなものは、あなたが必要としているものとより一致していると思います。

于 2012-12-10T09:06:40.157 に答える
0

JPAの@Transientアノテーションは、フィールドがデータベースに永続化されないこと、つまりセマンティクスが異なることを示すために使用されます。

今の解決策は...

@Transient
private List<WeekdayType> repeatDays;
于 2012-12-10T09:19:48.990 に答える