目前我在验证/保存时强制执行外键约束时出现问题。我已经尝试过集成测试和单元测试。单元测试模拟域,集成测试没有。问题是,即使domainB未保存在数据库中,DomainA也可以成功验证DomainB中其中一列的外键约束。将进行保存,并且在事务完全运行之前不会出现问题。我对添加单向关系的理解是,validate方法将查询数据库以检查对象(在本例中为domainB)是否存在。我的理解是不正确的,我必须自己进行验证吗?
class DomainA
{
String id
DomainB domainB
static constraints =
{
id unique:true
collection nullable:false
}
static mapping =
{
domainB column:"id_column_name"
}
}
class DomainB
{
String id
static constraints = {
id unique : true
}
}
测试伪代码
Create DomainB object. Do not save
Create DomainA object, with DomainB object set as the referenced object
Attempt to validate DomainA object //succeeds without issue
Attempt to save DomainA object //fails on flush in integration test