2013-06-26 48 views
3

選擇我有表定義油滑:使用投影來定義列的列表中油滑

object ADB { 
    extends BaseDB[A]("a") 
    with PostgresDriver{ 
    def id = column[Long]("id", O.PrimaryKey) 
    def name = column[String]("name") 
    ... 
    def * = id ~ name ~ ... <> (A.apply _, A.unapply _) 

    def forSelect = id ~ name 
} 

是否可以查詢A時參考forSelect

我想保留在一個地方被選中的字段列表,以便將來可以推送forSelect特性。

回答

4

我相信你能完成你想要的是這樣的:

(for(a <- ADB) yield a.forSelect).list 

這與stefan.schwetschke發佈的內容之間的區別在於,我使用實例a來引用forSelect,而不是從ADB對象本身訪問它。

+0

它的工作原理!謝謝! – 1esha

0

試試看

...map(ADB.forSelect) 

for(...) yield ADB.forSelect 

以下爲我工作:

​​
+0

感謝您的回覆。你的例子和我的主要區別在'擴展BaseDB [A](「a」)'。我用映射到對象,但不是用於元組。我嘗試使用你的解決方案,但又得到了'SlickException:Select(TableNode,「id」)found。這通常是由於嘗試直接在查詢中使用「原始」表格對象而不通過生成器引入的。有任何想法嗎? – 1esha