0
Slick을 사용하여 데이터베이스에 간단한 삽입하는 방법을 이해할 수 없습니다. 나는 오라클 db와 함께 테이블 생성기를 사용하고 있는데 다음과 같은 것을 얻고있다.리프팅 쿼리 및 옵션 열을 사용하여 간단하게 매끄럽게 삽입하는 방법
case class SimulatonRow(id: scala.math.BigDecimal, startDate: Option[java.sql.Timestamp], endDate: Option[java.sql.Timestamp], numberOfProc: Option[scala.math.BigDecimal], code: String)
/** GetResult implicit for fetching SimulatonRow objects using plain SQL queries */
implicit def GetResultSimulatonRow(implicit e0: GR[scala.math.BigDecimal], e1: GR[Option[java.sql.Timestamp]], e2: GR[Option[scala.math.BigDecimal]], e3: GR[String]): GR[SimulatonRow] = GR{
prs => import prs._
SimulatonRow.tupled((<<[scala.math.BigDecimal], <<?[java.sql.Timestamp], <<?[java.sql.Timestamp], <<?[scala.math.BigDecimal], <<[String]))
}
class Simulaton(tag: Tag) extends Table[SimulatonRow](tag, Some("BPRISK"), "SIMULATON") {
def * = (id, startDate, endDate, numberOfProc, code) <> (SimulatonRow.tupled, SimulatonRow.unapply)
/** Maps whole row to an option. Useful for outer joins. */
def ? = (id.?, startDate, endDate, numberOfProc, code.?).shaped.<>({r=>import r._; _1.map(_=> SimulatonRow.tupled((_1.get, _2, _3, _4, _5.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported."))
/** Database column ID PrimaryKey */
val id: Column[scala.math.BigDecimal] = column[scala.math.BigDecimal]("ID", O.PrimaryKey, O.AutoInc)
/** Database column START_DATE */
val startDate: Column[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("START_DATE")
/** Database column END_DATE */
val endDate: Column[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("END_DATE")
/** Database column NUMBER_OF_PROC */
val numberOfProc: Column[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("NUMBER_OF_PROC")
/** Database column CODE */
val code: Column[String] = column[String]("CODE")
}
그런 다음 기본 키에 AutoInc 옵션을 추가한다.
TableQuery [Simulaton] .map 또는 InsertInvoker를 사용하여 'insert'변형을 시도했지만 코드를 컴파일 할 수 없습니다.
어떻게 작동합니까?
필자는 autoincremental PK와 columns - code, startDate로 '삽입'을해야합니다.
과부하있어서 값 인서트 : [오류] TT (쿼리 scala.slick.lifted.Query [TT (문자열 옵션 [의 java.sql.Timestamp])]) (암시 세션 : 오류 : (값 : (문자열, 옵션 [java.sql.Timestamp])) (암시 적 세션 : scala.slick.jdbc.JdbcBackend # SessionDef) int [ (오류)] [오류]. 오류 (.processId, 지금) [오류]^ –
나는 'id'열에 Option []에서 중괄호를 써야한다고 생각합니다. 삽입 문에서 무시되지만 모델을 변경하는 방법을 이해할 수 없다. –
swer. 유형 오류는 Slick에서 무언가 실패 할 때 약간 무서워 할 수 있습니다. 유형과 옵션이 일치하는지 확인하십시오. 인라인 형식 어소시에이션도 도움이 될 수 있습니다. – cvogt