2

我有一个名为 的 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)))

但我希望别名可以双向工作。它似乎没有。有没有办法设置可以在 a 中使用的别名select

4

1 回答 1

2

有点晚了,但它来了......

使用命名策略,更多信息请点击此处。所以你的规格应该是这样的:

...
(: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}})
于 2015-08-09T00:06:32.693 回答