Grails Однонаправленные ограничения - PullRequest
0 голосов
/ 25 августа 2011

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