Используйте @Relate и уникальный - PullRequest
0 голосов
/ 06 июня 2019

Как я могу использовать Relate и уникальные с помощью акведука ORM?

В моем коде я хочу, чтобы userapp был уникальным?Если я пытаюсь поставить @Column(unique: true), я получаю сообщение об ошибке, подобное этому:

*** Отношение 'userapp' к '_Professional' не может содержать метаданные 'Column' и 'Relate'.Чтобы добавить флаги для индексации или обнуляемости в отношения, см. Конструктор для «Связи».

Мой код ниже:

class Professional extends ManagedObject<_Professional> implements _Professional {}

class _Professional {

  @primaryKey
  int id;
  @Relate(#professionals)
  Userapp userapp;
  @Column(defaultValue: 'true')
  bool active;  

  ManagedSet<ProfessionalSpecialty> professionalSpecialties;

}

1 Ответ

1 голос
/ 07 июня 2019

Является ли столбец внешнего ключа, лежащий в основе userapp, уникальным или нет, определяется свойством обратной зависимости.В этом случае обратное значение равно Userapp.professionals.

Если Userapp.professionals имеет тип Professional, то к userapp добавляется уникальное ограничение;это отношения «есть один».

Если Userapp.professionals имеет тип ManagedSet<Professional>, уникальное ограничение не применяется;это отношение «есть-много».

Я полагаю, что поскольку вы используете форму множественного числа (professionals), вы объявляете ManagedSet<Professional>.Измените объявление в определении таблицы _Userapp и убедитесь, что обратное совпадение в _Professional:

class _Userapp {
  ...
  Professional professional;
}
class _Professional {
  ...
  @Relate(#professional)
  Userapp userapp;

}
...