Nano Hash - криптовалюты, майнинг, программирование

Play 2 Сопоставление шаблонов Anorm и scala

Я пытаюсь использовать сопоставление с образцом при запросе базы данных mysql из модуля play2 с использованием anorm. Код выглядит так:

def test= Action {
    DB.withConnection { implicit c =>
    val entities = SQL("SELECT entity.idEntity, entity.name FROM entity")().collect {
        case Row(id:Int, name:String) => Entity(id, name)
  }
  printList(entities.toList)

}

Но имя: Строка ничему не соответствует (уже пытался сопоставить только целое число, и все работает нормально). В моей БД тип столбца "имя" таблицы сущностей - varchar (45).

Что-то я пропустил?


  • Попробуйте использовать 'name: Option[String]', так как столбец может принимать значения NULL. 01.04.2013
  • та же ошибка с Option[String] или даже Some[String] 03.04.2013
  • Вы указываете на ошибку. Что это за ошибка? 03.04.2013
  • Нет ошибки... просто ничего не совпадает, если я помещу туда тип String. 03.04.2013

Ответы:


1

Вы можете попытаться сопоставить Row с Int и именованным подстановочным знаком.

scala> new Row(0,"foo")
res0: Row = Row(0,foo)


scala> res0 match{
     | case Row(i: Int,s @ _) => println(i + " " + s)
     | }
0 foo
01.04.2013
  • да, я могу это сделать ... но разве идея сопоставления с образцом типа не заключается в том, чтобы избежать приведения результатов сопоставления с образцом? 01.04.2013

  • 2

    Если имя имеет значение null, то это соответствие должно работать:

    case Row(id:Int, Some(name:String)) 
    
    19.06.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..