1

我有这个域模型grails-app/domain,命名为com.portal.Schedule.groovy具有以下属性:

Subject subject 
Room room
Day day
Time timeStart
Time timeEnd    
static embedded = ['timeStart', 'timeEnd']

对象com.portal.Time中的位置位于src/groovy具有此属性的位置:

Integer hour
Integer minute
public Time(Integer hour, Integer minute) {
   super();
   this.hour = hour;
   this.minute = minute;
}

问题是当我想使用BootStrap.groovy以下语法添加记录时:

new Schedule(subject: Subject.get(1), room: Room.get(1), day: Day.MON,
   timeStart: new Time(9, 0), timeEnd: new Time(11, 00)).save(failOnError: true)

我在完成启动之前收到此错误消息:

消息:实体没有默认构造函数:com.portal.Time;嵌套异常是 org.hibernate.InstantiationException: No default constructor for entity: com.portal.Time

我该如何解决这个问题才能让我运行具有这些属性Bootstrap.groovy的实例?Schedule

4

2 回答 2

1

您的 Time 构造函数设置为私有。这就是您收到该错误的原因。

于 2012-07-06T15:40:14.853 回答
0

我已经在谷歌上彻底搜索了如何解决这个问题。它似乎groovy具有与python构造函数或tuplesPython 中位于此处的其他术语几乎相同的功能

将注释插入类后,Time我现在可以以多种方式对构造函数进行编码。

于 2012-07-09T17:16:21.467 回答