我已经在Scala和ScalaQuery中开始了我的第一个项目。到目前为止,虽然我偶尔会遇到一些困难,但两者看起来都很好并且看好。
有人可以解释一下如何获取一个类对象(在这种情况下,Domain case类有大约12列)而不是元组。 下面的查询是返回元组,但问题是我需要表的大约9列(或所有列),而不在查询yield中提供每个列名。 Domain类已经定义了所有列,那么为什么下面的查询会返回元组而不是Domain对象,这样我就可以使用Domain.name,Domain.level而不是在返回的元组中计算位置。
val ext_id = 'ns1.amazon.com'
val name = "www.getcrazy.com"
val validDomains = for {p <- Domain where { p => (p.ext_id is ext_id) && (p.domain_name is name) && (p.is_deleted is false) && (p.result_code is "1000")}} yield *
for(pp <- validDomains) {
logger.debug("State is " + pp._6 + " for domain ID - " + pp._1)
}
有什么建议吗?
谢谢, 爬完
答案 0 :(得分:6)
创建object that extends org.scalaquery.ql.basic.BasicTable
。例如,
case class Community (id:String, name:String, latitude:Double, longitude:Double)
object CommunityTable extends Table[Community]("Communities") {
def id = column[String]("ID", O PrimaryKey, O NotNull, O DBType "uniqueidentifier")
def name = column[String]("Name", O NotNull, O DBType "varchar(255)")
def longitude = column[Double]("Longitude")
def latitude = column[Double]("Latitude")
def * = id ~ name ~ longitude ~ latitude <> (Community, Community.unapply _)
}
有了这个,您只需查询CommunityTable
并获得List[Community]
返回:
val c: List[Community] = CommunityTable.where(c => (c.name startsWith term)).list