Могу ли я указать псевдонимы полей по умолчанию в Korma?

У меня есть поле MySQL называется thing_id, но я хочу сослаться на это как :thing-id в моем коде. Я могу определить сущность следующим образом:

(defentity thing
  (entity-fields :id [:thing_id :thing-id]))

так что когда я получаю вещи:

(select thing)

Поле MySQL, которое содержит подчеркивание, преобразуется:

[{:id 1 :thing-id 2}]

Но я не могу выбрать с псевдонимом:

(select thing (where (= :thing-id 2)))

дает

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
Unknown column 'thing.thing-id' in 'where clause'

Я могу это исправить в каждом where вызов:

(select thing (where (= :thing_id 2)))

Но я надеялся, что псевдоним работает в обе стороны. Это не похоже на. Есть ли способ установить псевдоним, который может быть использован в select?

1 ответ

Решение

Слишком поздно, но здесь все идет...

Используйте стратегию именования, подробнее здесь. Так что ваша спецификация должна выглядеть так:

...
(:require [camel-snake-kebab.core :refer [->kebab-case ->snake_case]])
...

(def db-spec
  {:classname "com.mysql.jdbc.Driver"
   :subprotocol "mysql"
   :delimiters "`"
   :unsafe true
   :subname db-subname
   :user db-user
   :password db-password
   :naming {:keys ->kebab-case
            :fields ->snake_case}})
Другие вопросы по тегам