2011-05-25 34 views
2

我已經在Scala和ScalaQuery中開始了我的第一個項目。到目前爲止,雖然我偶爾會遇到一些困難,但兩人都看起來很好,很有希望。如何在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) 
} 

有什麼建議嗎?

感謝, 爬完

回答

6

創建object that extendsorg.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 
+0

人,這是偉大的。 @pawank,請將此標記爲接受的答案。 – 2013-02-06 23:14:07

相關問題