我一直在尝试使IDE项目能够识别Squeryl使用的子句。我已经将Squeryl * .jar添加到我的项目依赖项中,但是仍然必须导入要使用的子句“ From”的类。更具体地说,我必须使用“ import org.squeryl.dsl.boilerplate.FromSignatures”扩展对象,以使“ from”工作。那是一个奇怪但仍可行的解决方案,但是命令“ like / select”不能被导入。我什至尝试实现select方法。

    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”说选择不期望的类型“ 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
                }
            }

最佳答案

有关此方面的文档可能会有所改进。在Squeryl 0.9.5中,对于典型用途,您需要:

import org.squeryl._
import PrimitiveTypeMode._


后者的导入将带来您所需要的大部分。

在Squeryl 0.9.6中,不建议使用PrimitiveTypeMode,您可以定义自己的EntryPoint对象,而应从该对象导入。

关于java - Squeryl子句(from,select,like,where)在intellij中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20998076/

10-09 02:54