Скала игровой анорм;Возвращенный объект базы данных, получить значение его свойств в несложной форме - PullRequest
1 голос
/ 17 января 2012

Здравствуйте, я довольно новичок в Scala.Я хочу изучать Scala, потому что:

  1. Чтобы избавиться от кода котельной плиты из Java.
  2. Играйте с разными парадигмами.
  3. Просто ради интереса к изучению новых вещей

Я изучаю учебник на сайте игр.*

Вот учебный код:

Player.create(Player(Id(1), "bob@gmail.com", "secret", "Bob", false)) 
Post.create(Post(NotAssigned, "My 1st post", "Hello world", new Date, 1))

Чтобы получить более глубокие знания, я поиграл и изменил примеры.Я решил не давать игроку предопределенный идентификатор, но позволил MySql назначить его.В MySql я определил идентификатор игрока как int, а идентификатор Post как long. // Я изменю это позже, но для этого примера это важно.

Но то, что меня шокировало, это то, как я это сделал, посмотрите на второй ряд.Это совсем не элегантно.

val player = Player.create(Player(NotAssigned, "bob@gmail.com", "secret", "Bob", false)) 
val id = player.get.id.get.get.asInstanceOf[Number].intValue()
Post.create(Post(NotAssigned, "My 1st post", "Hello world", new Date, id)

Теперь на мой вопрос, как мне получить Id в качестве int от созданного игрока менее абсурдным способом?

1 Ответ

4 голосов
/ 18 января 2012

Не уверен, сколько энергии я бы потратил на NORM.

Игра внесена в стек TypeSafe;как таковые, они не так тонко продвигают ScalaQuery, как предпочитаемая оболочка SQL в Play 2.0: https://github.com/playframework/Play20/wiki/ScalaDatabase

NORM - это своего рода мера с ограничением пробела, у нее есть некоторые приятные функции, она позволяет избежать накладных расходоввзорван ORM, как Hibernate, и лучше, чем прямой JDBC.Однако это совсем не безопасно;поэтому вы можете поспорить, что ScalaQuery от TypeSafe будет стандартом Play (не позднее Q3, так как Scala 2.10 [с отражением!] и превращение ScalaQuery в SLICK / SIQ [Google it] идут)

I'mиспользуя мастер-ветку ScalaQuery сейчас (вы должны создать ее самостоятельно, довольно просто с SBT), вы будете поражены.

Или используйте NORM с Play, которая также может работать.Моя чашка тоже не чай ...

...