Как обрабатывать неназначенные идентификаторы с помощью anorm?

Anorm имеет специальный тип anorm.Pk для типизированных первичных ключей (и его подкласс anorm.NotAssigned). Это позволяет присвоить значение NotAssigned, если база данных отвечает за создание соответствующего ключа.

Существует ли эквивалентная концепция для внешних ключей? Сейчас я использую тип Long. Однако, если внешний ключ еще не известен, мне придется присвоить значение null или заменить тип на Option[Long]. Это похоже на то, что это не так, как это должно быть сделано.


person Fynn    schedule 28.06.2012    source источник


Ответы (1)


Anorm не предлагает функциональности для отношений.

Уберите свой FK из своей модели, но примите FK в качестве аргументов для вашего CRUD, например. для создания «Надуманного», принадлежащего пользователю:

def create(c: Contrived, userId: Long)
  DB.withConnection { implicit connection =>
  val id = SQL("""
      insert into c
      (first, second, login_id)
      values
      ({first}, {second}, {login_id})
      """).on(
    'first -> c.first,
    'second -> c.second,
    'login_id -> userId

...так далее

person opyate    schedule 28.06.2012
comment
Это звучит как хорошее решение, если у вас есть отдельные действия для создания users и cs. Но я использую одно действие в сочетании с повторяющимися значениями формы. - person Fynn; 28.06.2012
comment
Извините, я пытаюсь понять, как сказать, что я ответил на ваш вопрос, не пытаясь звучать как Ричард :) Задайте для этого отдельный вопрос, потому что это отклоняет вопрос о том, есть ли FK, эквивалентный PK. - person opyate; 28.06.2012