В Scala Slick, если вы не используете идентификатор с автоматическим инкрементным идентификатором, но с стратегией формирования последовательности для id, как вы возвращаете этот идентификатор?Как вернуть генерации последовательности для Id
ответ
Допустим, у вас есть следующий класс случая и Slick таблица:
case class User(id: Option[Int], first: String, last: String)
object Users extends Table[User]("users") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def first = column[String]("first")
def last = column[String]("last")
def * = id.? ~ first ~ last <> (User, User.unapply _)
}
важные вещи, чтобы рассмотреть здесь является тем фактом, что User.id является вариантом, потому что, когда мы создаем его мы установим его None и DB будут генерировать номер для него.
Теперь вам нужно определить новое сопоставление вставки, которое опускает автоинкрементный столбец. Это необходимо, потому что некоторые базы данных не позволяют вставлять в столбец, который помечен как Auto Incremental. Таким образом, вместо:
INSERT INTO users VALUES (NULL, "first, "last")
Slick сгенерирует:
INSERT INTO user(first, last) VALUES ("first", "last")
отображение выглядит следующим образом (который должен быть помещен внутрь пользователей):
def forInsert = first ~ last <> ({ t => User(None, t._1, t._2)}, { (u: User) => Some((u.first, u.last))})
Наконец получать автоматически сгенерированный идентификатор просто. Нам нужно только указать в возвращающей колонке ID:
val userId = Users.forInsert returning Users.id insert User(None, "First", "Last")
Или вы могли бы вместо того, чтобы переместить возвращающегося заявление:
def forInsert = first ~ last <> ({ t => User(None, t._1, t._2)}, { (u: User) => Some((u.first, u.last))}) returning id
и упростить вставку вызовов:
val userId = Users.forInsert insert User(None, "First", "Last")
- 1. AtomicInteger для генерации ограниченной последовательности
- 2. Emacs macro для генерации последовательности?
- 3. Сценарий генерации последовательности чисел
- 4. Использование Hibernate Session.doWork для генерации последовательности. Генерация
- 5. значение последовательности для id в ddl2hbm
- 6. Настройка генерации последовательности Hibernate
- 7. оптимизация генерации последовательности спящего режима
- 8. JPA: Проблема с генерации id
- 9. Простой алгоритм/метод для генерации последовательности,
- 10. Запрос Sql для генерации последовательности событий
- 11. Изменение генерации последовательности Hibernate для существующих данных
- 12. Логика для генерации алфавитной последовательности в C#
- 13. О генерации последовательности случайных чисел
- 14. Как создать предсказуемую перетасовку последовательности без генерации всей последовательности заранее?
- 15. Последовательность гибернации умножается на 50 для генерации `@ Id`?
- 16. Вернуть список последовательности
- 17. номер логической программы, необходимой для генерации id
- 18. Как использовать c() для генерации последовательности действительных чисел в r?
- 19. Лучшие методы для генерации Id Android Studio
- 20. MYSQL - генерации последовательности подмножества в таблице
- 21. Получение NHibernate для генерации строки HiLo ID
- 22. EclipseLink игнорирует стратегию для генерации id - PostgreSQL
- 23. Стратегия генерации последовательности JPA ИДЕНТИФИКАЦИЯ для таблицы AS400
- 24. Rhino Mocks: Как вернуть номера из последовательности
- 25. Удалить элементы в процессе бесконечной генерации последовательности
- 26. Преобразование последовательности чисел в случайный поиск ID?
- 27. настроить спящий генератор последовательности id
- 28. PHP - Улучшение генерации последовательности случайных чисел
- 29. Быстрый метод генерации последовательности случайных строк
- 30. Ускорение генерации последовательности, используя мой код