Hibernate Grails UnuniqueObjectException:具有相同标识符值的不同对象已与会话关联

Hibernate Grails UnuniqueObjectException:具有相同标识符值的不同对象已与会话关联,hibernate,grails,gorm,grails-domain-class,Hibernate,Grails,Gorm,Grails Domain Class,我是grails-Gorm的新手,因此任何帮助都将不胜感激。我有一个名为“Employee”的域对象,如下所示: class Employee { String firstName String lastName Set<Workplace> workplaces = new HashSet<>() static hasMany = [workplaces: Workplace] static mapping = { workplaces cascade: '

我是grails-Gorm的新手,因此任何帮助都将不胜感激。我有一个名为“Employee”的域对象,如下所示:

class Employee {

String firstName
String lastName
Set<Workplace> workplaces = new HashSet<>()
static hasMany = [workplaces: Workplace]

static mapping = {
    workplaces cascade: 'all-delete-orphan'
}
}
“Country”和“Company”域是在我添加了依赖项的插件中定义的域对象。我在Bootstrap.groovy中填充公司和国家的预定义值。以下是类:

class Company {

String cmpCode

static constraints = {
    cmpCode blank: false, maxSize: 255, unique: true
}
}

class Country {

String ctyCode
static constraints = {
    ctyCode blank: false, maxSize: 255, unique: true
}

Country(String ctyCode) {
    this.ctyCode = ctyCode
}


}
这就是我保存/更新员工的方式(添加所有相关工作场所后)

现在我的问题如下: 当我向我的员工添加不同的工作场所并尝试保存/合并员工对象时,如果且仅当我工作场所中的公司代码和国家代码是唯一的,则该操作有效。如果我尝试添加具有相同国家/地区、公司但开始/结束日期不同的工作场所,则会引发以下异常: org.hibernate.unUniqueObjectException:具有相同标识符值的不同对象已与会话关联:[Company](也可以是国家/地区)

对我来说,这听起来像是GORM再次试图拯救国家和公司,由于交易尚未提交,而之前的工作场所仍在会话中,hibernate抛出异常。 有什么解决办法吗?我做错了什么?有什么建议吗?
我正在使用Grails3.3.9尝试添加到Workplace

class Workplace {

Employee employee
Country country
Company company
LocalDate startDate
LocalDate endDate
static belongsTo = [employee: Employee]
}
static mapping = {
     country cascade: 'refresh,evict'
     company cascade: 'refresh,evict'
}

您能否添加调用
merge
服务的逻辑方式和位置?我想这会给我们提供更多的线索来帮助你。
static mapping = {
     country cascade: 'refresh,evict'
     company cascade: 'refresh,evict'
}