У меня есть 2 класса case:
case class ClassTeacherWrapper(
success: Boolean,
classes: List[ClassTeacher]
)
2-й:
case class ClassTeacher(
clid: String,
name: String
)
И такой запрос:
val query =
SQL"""
SELECT
s.section_sk::text AS clid,
s.name AS name
from
********************
"""
P.S. Я поставил * вместо запроса из соображений безопасности:
Итак, мой запрос возвращает 2 значения. Как сопоставить его с case class ClassTeacher
в настоящее время я делаю что-то вроде этого:
def getClassTeachersByInstructor(instructor: String, section: String): ClassTeacherWrapper = {
implicit var conn: Connection = null
try {
conn = datamartDatasourceConnectionPool.getDBConnection()
// Define query
val query =
SQL"""
SELECT
s.section_sk::text AS clid,
s.name AS name
********
"""
logger.info("Read from DB: " + query)
// create a List containing all the datasets from the resultset and return
new ClassTeacherWrapper(
success =true,
query.as(Macro.namedParser[ClassTeacher].*)
)
//Trying new approch
//val users = query.map(user => new ClassTeacherWrapper(true, user[Int]("clid"), user[String]("name")).tolist
}
catch {
case NonFatal(e) =>
logger.error("getGradebookScores: error getting/parsing data from DB", e)
throw e
}
}
с этим я получаю это исключение:
{
"error": "ERROR: operator does not exist: uuid = character varying\n
Hint: No operator matches the given name and argument type(s). You
might need to add explicit type casts.\n Position: 324"
}
Может ли кто-нибудь помочь, где я ошибаюсь. Я новичок в scala и Anorm. Что мне нужно изменить в query.as
части кода?
ERROR: operator does not exist: uuid = character varying
возникает из БД, когда она анализирует запрос, поскольку пытается сравнить несовместимые типыuuid
сvarchar
(string
). Я предполагаю, что********
в запросе включает пунктWHERE
, вызывающий это, но без него это невозможно подтвердить/помочь. - person cchantep   schedule 20.11.2018!!var!! connection
(изменчивость ресурсов),query.as(Macro.namedParser[ClassTeacher].*)
(RowParser
материализуется для каждого запроса) - person cchantep   schedule 20.11.2018