2

関連するいくつかのクラスがあります。それらの1つは、別のクラスのオブジェクトセットを持っています。このような、

 @Entity
 public class Serving extends Model{

@Required
public Item item;
@Required
public Float amount;
@Required
public Date time;

public Serving(Item item, Float amount) {
    super();
    this.item = item;
    this.amount = amount;
    this.time = new Date();
}
}

 @Entity
 public class Receipt extends Model{

@Required
@ElementCollection
@NotNull
public Set<Serving> servings;
@Required
DiningTable dtable;

public Receipt(Set<Serving> servings, DiningTable dtable) {
    super();
    this.servings = servings;
    this.dtable = dtable;
}

//order'ın totalın hesaplamak lazım.

 }

また、これを初期化するための yaml データもあります。

Serving(ser1): item : it1 amount : 1 time : 2012-04-05 12:10

Serving(ser2): item: it2 amount: 0.5 time: 2012-04-05 12:11

Serving(ser3): item : it3 amount : 2 time : 2012-04-04 13:10

Serving(ser4): item : it4 amount : 1 time : 2012-04-04 13:10

Serving(ser5): item : it5 amount : 0.5 time : 2012-04-04 14:00

Serving(ser6): item : it6 amount : 1 time : 2012-04-04 14:10

Serving(ser7): item : it7 amount : 1 time : 2012-04-03 16:00

Serving(ser8): 項目: it8 量: 2 時刻: 2012-04-03 16:01

Serving(ser9): item : it9 amount : 1 time : 2012-04-03 16:30

サービング(ser10): 項目: it2 量: 1 回: 2012-04-02 17:00

Receipt(rec1): dtable : tab1 サービング:
- ser1 - ser2 - ser3

Receipt(rec2): dtable : tab2 サービング: - ser4 - ser5

Receipt(rec3): dtable : tab3 サービング: - ser6

Receipt(rec4): dtable : tab4 サービング: - ser7 - ser8

Receipt(5): dtable : tab4 サービング: - ser9 - ser10

このデータを初期化しようとすると、このエラーが発生します。

14:13:01,200 警告 ~ SQL エラー: 1364、SQLState: HY000 14:13:01,200 エラー ~ フィールド 'servings_time' にはデフォルト値がありません 14:13:01,200 エラー ~ データベースの状態をセッション org.hibernate と同期できませんでした.exception.GenericJDBCException: JDBC バッチ更新を実行できませんでした

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

サービングクラスコンストラクターでは、パラメーターとして日付を取得する必要があります。

public Serving(Item item, Float amount, Date date) {
super();
this.item = item;
this.amount = amount;
this.time = date;
}

したがって、このコンストラクターも追加する必要があります...

于 2012-04-17T18:11:49.470 に答える
0

時間に次の注釈を付ける必要があります。

    @Temporal(TemporalType.TIME)
    public Date date;

or

    @Temporal(TemporalType.DATETIME)
    public Date date;
于 2012-04-15T13:13:59.977 に答える