如何正确定义SQLKorma实体的外键?

时间:2018-03-07 13:05:54

标签: clojure sqlkorma

当我使用以下实体配置运行简单查询时。 SqlKorma生成一个查询并尝试将table_b与table_a连接,但是它使用的是一个不存在的字段?

SELECT "table_a"."token", "table_a"."first-name", "table_a"."last-name", "table_b"."item" FROM ("table_a" LEFT JOIN "table_b" ON "table_b"."table_a_id" = "table_b"."token" 

我在配置中指定了正确的外键,但sqlKorma仍尝试在table_a_id上加入?

(declare table_a table_b)

(korma/defentity table_a
                 (korma/pk :token)
                 (korma/database db)
                 (korma/table :table_a)
                 (korma/has-one table_b))

(korma/defentity table_b
                 (korma/pk :token)
                 (korma/database db)
                 (korma/table :table_b)
                 (korma/belongs-to table_a {:fk :token}))

如果我将table_b PK设置为table_a_id,那么查询将起作用,但我想使用token作为PK。

1 个答案:

答案 0 :(得分:0)

我需要在另一边添加外键,如下所示:

(declare table_a table_b)

(korma/defentity table_a
                 (korma/pk :token)
                 (korma/database db)
                 (korma/table :table_a)
                 (korma/has-one table_b {:fk :token}))

(korma/defentity table_b
                 (korma/pk :token)
                 (korma/database db)
                 (korma/table :table_b)
                 (korma/belongs-to table_a {:fk :token}))