В настоящее время у меня проблема с применением ограничений внешнего ключа при проверке / сохранении. Я пробовал и интеграционный тест, и юнит-тест. Модульное тестирование имитировало домены, интеграционное тестирование - нет. Проблема в том, что DomainA, который должен иметь ограничение внешнего ключа для одного из столбцов в DomainB, успешно проверяет, даже если 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