2

我已经在 Scala 和 ScalaQuery 中开始了我的第一个项目。到目前为止,尽管我偶尔会遇到一点困难,但两者看起来都很好并且很有希望。

有人可以解释一下如何获取一个类对象(在这种情况下,域案例类有大约 12 列)而不是元组。下面的查询返回元组,但问题是我需要大约 9 列(或所有列)的表,而不在查询产量中提供每个列名。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)
}

有什么建议吗?

谢谢,帕万

4

1 回答 1

6

创建一个扩展的对象 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
于 2011-10-21T16:57:21.550 回答