【发布时间】:2015-12-25 11:02:40
【问题描述】:
我的 GORM 关系管理遇到了一些问题。基本上有 4 个域类在这个问题的范围内。一个House 是一个有多个Queue 的餐厅,每个餐厅都有多个Ticket。门票属于Customer。
主要问题是当我创建一个Ticket 和一个Customer 和一个Queue 实例时,休眠抱怨customer_ID 是null。 Ticket 域类如下所示:
class Ticket implements Comparable<Ticket> {
int number;
boolean isValid;
static belongsTo = [customer: Customer, queue: Queue]
public Ticket(Customer customer, Queue queue,int number){
println "Create ticket, customer: ${customer}, queue:${queue}, number:${number}";
customer = customer;
queue = queue;
number = number;
isValid = true;
}
}
错误出现在我创建 Ticket 并保存它的一个控制器类中。
//c and q are Customer and Queue instances that have passed null check
Ticket t = new Ticket(c, q, 10);//In the constructor I see the Customer and Queue instances are not null indeed
t.save(flush: true);
if (t.hasErrors()) {
log.error t.errors;
return;
}
错误是一个空的Customer_ID,我不太明白。我已经将客户和队列传递到Ticket 构造函数中,但是为什么当我保存 Grails 时它似乎与 id 不匹配?我已验证客户 ID 已成功生成。请指出我在 GORM 设置中犯的错误。
Message: NULL not allowed for column "CUSTOMER_ID"; SQL statement:
insert into ticket (id, version, customer_id, is_valid, number, queue_id) values (null, ?, ?, ?, ?, ?) [23502-176]
【问题讨论】: