by shigemk2

当面は技術的なことしか書かない

【追記あり】Skinny ORMで特定のカラムだけをselectしたい人生だった

質問

https://groups.google.com/forum/#!topic/skinny-framework/InBhmzxJY-Q

こういうコードがあったとして、

// Using findAll or where method in Skinny ORM, I want to get specific column.
// Example: Scala code
import scalikejdbc._
import skinny.orm._
import org.joda.time._

case class Member(id: Long, name: Option[String], createdAt: DateTime)
object Member extends SkinnyMapper[Member] {
  override lazy val defaultAlias = createAlias("m")
  override def extract(rs: WrappedResultSet, n: ResultName[Member]): Member = autoConstruct(rs, n)
}

findAllとかwhereを使って、以下の様なSQLを叩くようなことをしたい。

select id from member;

といったことを質問しました。

返答

SkinnyORMにそんなAPIはないです

見敵即必殺。ちょっと違うな。即レスがありがたかったです。

ScalikeJDBCを直接使え、とのことです。

lazy val m = defaultAlias 
def findIds(): Seq[Long] = withSQL { select(m.id).from(Member as m) 
}.map(_.long(1)).list.apply() 

レコード数が少ない場合は、findAll().map(_.id)でも可、とのことでした。

ありがたや。

HELLSING III〈初回限定版〉 [DVD]

HELLSING III〈初回限定版〉 [DVD]

追記

リンクが間違っていたので、修正しました。