def findById(userId: Int)(implicit session: Session): Option[User] = { val query = for{ u <- Users if u.id === userId } yield u query.firstOption }
http://stackoverflow.com/questions/16461260/select-single-ro...
However, that's not even the brink of the iceberg. Try finding out how to update multiple fields in an object. Say you retrieve a User object, and you want to set a new email, zip, and address. I'd suppose, this would work with simple getters and setters, i.e.:
user = Users.get(user_id) user.email = new_mail user.zip = new_zip user.address = new_address
Instead, you have to do this:
val map = Query(User) .filter(_.id === user_id) .map(ab => ab.email ~ ab.zip ~ ab.address)
map.update((new_mail, new_zip, new_address))
And even that only works with updateable result sets. See: http://stackoverflow.com/questions/16757368/how-do-you-updat...
https://groups.google.com/forum/#!msg/scalaquery/ML56aZAfy3g...
Or, to quote from the stackoverflow answer above: "Typesafe, why your documentation is so bad ? I have to Google pretty much every silly thing or dig through unit-tests for hours. Please improve it. Thanks."
Now, after a lot of searching, I found solutions to all of my problems, but it took a long time, lots of Google, and almost nothing came out of their awful documentation.