ElementCollection与PlayFrameWork一起使用

时间:2012-04-15 11:15:14

标签: playframework yaml

我有一些相关的课程。其中一个是另一个类的对象集。像这样,

 @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数据可用于初学者。

  

服务(SER1):   item:it1   金额:1   时间:2012-04-05 12:10

     

服务(SER2):   item:it2   金额:0.5   时间:2012-04-05 12:11

     

服务(ser3):   item:it3   金额:2   时间:2012-04-04 13:10

     

服务(ser4):   item:it4   金额:1   时间:2012-04-04 13:10

     

服务(ser5):   item:it5   金额:0.5   时间:2012-04-04 14:00

     

服务(ser6):   item:it6   金额:1   时间:2012-04-04 14:10

     

服务(ser7):   item:it7   金额:1   时间:2012-04-03 16:00

     

服务(ser8):   item:it8   金额:2   时间:2012-04-03 16:01

     

服务(ser9):   item:it9   金额:1   时间:2012-04-03 16:30

     

服务(ser10):   item:it2   金额:1   时间:2012-04-02 17:00

     

收据(REC1):   dtable:tab1   服务:
      - ser1       - ser2       - ser3

     

收据(REC2):   dtable:tab2   份量:        - ser4        - ser5

     

收据(REC3):   dtable:tab3   份量:        - ser6

     

收据(REC4):   dtable:tab4   份量:        - ser7        - ser8

     

收据(5):   dtable:tab4   份量:        - ser9        - ser10

当我尝试初始化此数据时,会出现此错误,

  

14:13:01,200 WARN~SQL错误:1364,SQLState:HY000   14:13:01,200错误〜字段'servings_time'没有默认值   14:13:01,200 ERROR~无法将数据库状态与会话同步   org.hibernate.exception.GenericJDBCException:无法执行JDBC批量更新

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

你应该用以下方式注释你的时间:

    @Temporal(TemporalType.TIME)
    public Date date;

or

    @Temporal(TemporalType.DATETIME)
    public Date date;

答案 1 :(得分:0)

在服务类构造函数中,必须将date作为参数。

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

所以我也要添加这个构造函数......