2014-01-08 52 views
1

我一直在試圖讓IDE項目識別Squeryl使用的子句。我已經將Squeryl * .jar添加到我的項目依賴項中,但仍然必須導入要使用的子項「From」的類。更具體地說,我不得不使用「import org.squeryl.dsl.boilerplate.FromSignatures」來擴展對象,以使「from」工作。這是一個奇怪的仍然可行的解決方案,但命令「像/選擇」蜜蜂進口..發生了什麼事情?我甚至tryed實現的選擇方法..Squeryl子句(from,select,like,where)在intellij中不工作

def select[R](r: =>R): R 

    object ExternalVendor extends FromSignatures{ 
     def findAll = tx { 
     from(vendors)(s => select(s)) map(s => s) } 

     def select[R](r: =>R): R 
     //def select[QueryYield[_R]](r: =>QueryYield[_R]): QueryYield[_R] 
    } 

,直到它給了我與 「R」 的問題說選(S)預計不會式 「QueryYield [_R]」 請幫助..

代碼:

package object models { 
       implicit val transactionFailures: Table[TransactionFailure] = LowkeySchema.transactionFailures 
       implicit val vendors: Table[ExternalVendor] = LowkeySchema.vendors 
       implicit val products: Table[Product] = LowkeySchema.products 
      } 

      trait Model[A] extends KeyedEntity[Long] { this: A => 
       val id: Long = 0 
       def save(implicit table: Table[A]): Either[Throwable, String] = { 
       tx { 
        try { 
        table.insert(this) 
        Right("Domain object is saved successfully") 
        } catch { 
        case exception: Throwable => Left(exception) 
        } 
       } 
       } 
      } 

      abstract class ExternalVendor(val name: String, val url: String) extends Model[ExternalVendor] 

      object ExternalVendor extends FromSignatures{ 
       def findAll = tx { 
       from(vendors)(s => select(s)) map(s => s) } 
       //def select[QueryYield[_R]](r: =>QueryYield[_R]): QueryYield[_R] 
      } 

      abstract class Product(val description: String, 
          val vendorName: String, 
          val basePrice: Double, 
          val plusPercent: Double) 
       extends Model[Product] { 
       def calculatePrice = basePrice + (basePrice * plusPercent/100) 
      } 

      object Product extends FromSignatures{ 
       def findByDescription(description: String): Option[Product] = 
       tx { 
        products.where(p => p.description like description).headOption 
       } 
      } 
+0

我正在使用Squeryl_0.9.5。爲了解決intellij中的子句問題,我使用了PrimitivetypeMode'import org.squeryl.PrimitiveTypeMode._'我沒有收到像/ where/from /等子句的任何語法錯誤。感謝所有幫助! – BZmart

回答

1

的文檔在此可以站在加以改進。在Squeryl 0.9.5中,對於典型用途,您希望:

import org.squeryl._ 
import PrimitiveTypeMode._ 

後者導入會帶來大部分所需。

在Squeryl 0.9.6 PrimitiveTypeMode已棄用,您可以定義自己的EntryPoint對象,而不是從中導入。

+0

如果您使用的是0.9.6,您可以在這裏找到有關'PrimitiveTypeMode'棄用的更多信息:http://squeryl.org/0.9.6.html – jcern

+0

intellij中子句問題的修復使用import org .squeryl.PrimitiveTypeMode._ – BZmart

0

我假設你讀過squeryl文檔中的getting started部分。 成立後,從examples之一的進口應該是足夠了:

import org.squeryl._ 
import adapters._ 
import dsl._ 
import dsl.ast.{RightHandSideOfIn, BinaryOperatorNodeLogicalBoolean} 
import framework._