Как динамически генерировать операторы SQL, используя Doob ie (scala) - PullRequest
2 голосов
/ 28 января 2020

У меня есть запрос:

val sql = """select
                   id,
                   clientName
             from
                  partnerClients
             where
                  partnerName = ?
          """

Я читаю partnerName из файла Excel и для каждого выполняю забаву c:

case class Partner(name: String)
case class Client(id: Int, name: String)

def queryPartnerClients(partnerName: String) = Query[String, Client](sql, None).toQuery0(partnerName)

def getPartnerClients(partner: Partner): IO[Vector[Client]] =  partnerClients(partner.name)                                             
                                                              .to[Vector]
                                                              .transact(xa)

Я использовал этот FAQ (Как превратить произвольную строку SQL в Query / Query0)

Проблема заключается в получении пустых результатов, когда я беру имя партнера из Excel, но это работает, если я указываю то же имя партнера в коде, подобном этому, например:

def partnerClients(partnerName: String) = {
    val temp = "Partner Name"
    Query[String, Client](sql, None).toQuery0(temp)
}

Я думал, что это проблема с кодировкой, и я пытался ее исправить

def partnerClients(partnerName: String) = {
    val temp = new String(partner.getBytes("Windows-1251"), "UTF-8")
    Query[String, Client](sql, None).toQuery0(temp)
}

Но результат тот же - пустой комплект.

1 Ответ

1 голос
/ 29 января 2020

Я использую этот ответ , чтобы включить ведение журнала и обнаружил, что отправленные мной параметры содержат пробелы. Функция обрезки исправлена ​​

...