2014-10-23 4 views
2

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

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

так, что когда я принести вещи:

(select thing) 

В поле MySQL, который содержит подчеркивание трансформируют:

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

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

(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?

ответ

2

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

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

... 
(: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}}) 
+0

Не слишком поздно! Будет полезно в следующий раз. Большое спасибо. – Joe

Смежные вопросы