Лучший синтаксис для получения первичного ключа в виде целого числа - PullRequest
3 голосов
/ 08 декабря 2011

Я использую Scala и Play Framework уже около месяца и до сих пор не нашел приятного способа написания SQL-запросов с использованием библиотеки anorm.

В моем приложении я часто делаю такие вещи:

// projectId and componentId are foreign keys. 
case class ProjectComponent(id: Pk[Int], projectId: Int, componentId: Int)

object ProjectComponent extends Magic[Event]
{
    def findForProject(project: Project) : List[ProjectComponent]
    {
        val projectId = project.id.get.get
        ProjectComponent.find("projectId=" + projectId).list()    
    }    
}

Строка, которой я не доволен:

// project.id returns Pk[Int]
// project.id.get returns Option[Int]
// project.id.get.get returns Int    
val projectId = project.id.get.get

Есть ли лучший способ получить идентификатор проекта в виде целого числа? Думая об этом, мне нужен только идентификатор проекта, чтобы написать запрос. В Play может быть функция, которая автоматически обрабатывает тип Pk.

Я новичок в Scala и Play, поэтому я мог пропустить что-то очевидное в документации.

Спасибо

Клем

1 Ответ

1 голос
/ 05 февраля 2012

Я не знаю ни одного способа использования ПК напрямую в запросах, хотя я не удивлюсь, если это возможно. Что касается получения значения Pk, я обнаружил следующее в классе Pk:

def apply() = get.get

Таким образом, эти два вызова эквивалентны:

val projectId = project.id.get.get
val projectId = project.id()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...