다음 코드에 대한 암시 인코더를 찾을 수 없습니다 : 다음과 같은 오류와스칼라 퀼은 예상대로 작동합니다 (노트북이 경우 클래스가) 긴
class LaptopDaoQuill[I <: Idiom, N <: NamingStrategy](implicit ctx: Context[I, N]) {
import ctx._
def insert(obj: Laptop) = {
val laptops = quote {
querySchema[Laptop]("laptops")
}
implicit val personInsertMeta = insertMeta[Laptop](_.id)
val q = quote {
laptops.insert(lift(obj))
}
ctx.run(q)
}
}
object Main {
def main(args: Array[String]): Unit = {
implicit val ctx = new SqlMirrorContext(MirrorSqlDialect, Literal)
val laptopDao = new LaptopDaoQuill
laptopDao.insert(Laptop(...))
}
:
오류 : (29, 55) Encoder[Long]
암시를 찾을 수 없습니다. 다음 중 하나를 수행하십시오. 1. 암시적인 Encoder[Long]
이 제공되고 다른 상충되는 암시는 없는지 확인하십시오. 2. Long
Embedded
사례 클래스 또는 AnyVal
으로 만드십시오. 암시 발 personInsertMeta = insertMetaLaptop
오류 : (32, 21) 암시 적 유형 com.training.entity.Laptop
laptops.insert에 대한 InsertMeta
(리프트 (OBJ))
는이 경우에 작동겠습니까 (확인과를 찾을 수 없습니다 주에서 PostgresJdbcContext) :
class LaptopDaoQuill[N <: NamingStrategy : TypeTag](implicit ctx: PostgresJdbcContext[N]) {...}
이 아닌 경우는 :
class LaptopDaoQuill[I <: Idiom : TypeTag, N <: NamingStrategy: TypeTag](implicit ctx: Context[I, N])
미리 감사드립니다.
, 경우 JdbcContext [방언 <: SqlIdiom, 명명 <:의 NamingStrategy] (은 dataSource : 닫기 가능한과 데이터 소스) 문맥 [Dialect, Naming]을 확장합니까? –
일반적인 Context 필요한 implicits (Encoder, InsertMeta)에 대한 더 구체적인 컨텍스트 (PostgresJdbcContext 또는 JdbcContext)가 정의되지 않았기 때문에. 예를 들어 JdbcContext의 경우 [여기] (https://github.com/getquill/quill/blob/master/quill-jdbc/src/main/scala/io/getquill/context/jdbc/Encoders.scala#L51) 정의됩니다.) 및 [여기] (https://github.com/getquill/quill/blob/master/quill-core/src/main/scala/io/getquill/dsl/MetaDsl.scala#L10). 'JdbcContext <: Context' 외에도'JdbcContext <: Encoders'도 있습니다. 따라서 JdbcContext와 Context 사이의 엔코더 차이점은 명확합니다. –
InsertMeta와 관련하여'JdbcContext <: SqlContext <: Context <: CoreDsl <: MetaDsl'과'Context <: CoreDsl <: MetaDsl'이므로 매크로의 차이점을 읽어야합니다. –