Как правильно определить внешний ключ для сущности 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, тогда запрос будет работать, но я хочу использовать токен в качестве PK.

1 ответ

Решение

Мне нужно было добавить внешний ключ на другой стороне, как это:

(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}))
Другие вопросы по тегам