【发布时间】:2014-01-08 14:13:31
【问题描述】:
我一直试图让 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。为了解决 intellij 中的子句问题,我使用了 PrimitivetypeMode
import org.squeryl.PrimitiveTypeMode._我没有收到 /where/from/etc 等子句的任何语法错误。感谢所有帮助!
标签: java scala intellij-idea squeryl