Я не использую черту Magic (так как она удалена в Play 2.0), поэтому я не уверен, работает ли она и здесь. В SQL вы можете использовать SCOPE_IDENTITY (), чтобы получить последний идентификатор, использованный для соединения. Так что вы можете сделать что-то вроде
val id = SQL("SELECT SCOPE_IDENTITY()")().collect {
case Row(id: Int) => id
}.head
new SomeModel(new Id(id), "aydog")
Я просто сейчас играю с Play. Так что это ничто, что я бы рекомендовал использовать в производстве без дальнейших исследований. Я особенно не уверен, могут ли быть проблемы с параллелизмом, когда несколько потоков используют метод ayDogAy.