2012-07-05 272 views
1

我有这样的域模型,grails-app/domain,命名为com.portal.Schedule.groovy具有这种性质:Grails领域嵌入式

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;嵌套0​​例外是org.hibernate.InstantiationException:没有默认 构造函数实体:com.portal.Time

我怎样才能解决这个有我Bootstrap.groovySchedule与这些属性的情况下运行?

回答

0

我在Google上彻底搜索了如何解决这个问题。 这似乎groovy几乎与python关于构造函数或在其他方面相同的特征tuples在Python位于here

插入批注类Time现在我可以以多种方式进行编码的构造之后。

1

Your Time构造函数被设置为private。这就是你得到这个错误的原因。

+0

对不起,对于最近的回复,在将构造函数的访问权限从private改为public后,我得到了同样的错误。 – 2012-07-09 17:04:23