Могу ли я указать псевдонимы полей по умолчанию в 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}})