我可以在Korma中指定默认字段别名吗?

时间:2014-10-23 12:34:01

标签: clojure korma

我有一个名为thing_id的MySQL字段,但我希望在我的代码中将其引用为: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 个答案:

答案 0 :(得分: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}})