Как правильно определить внешний ключ для сущности 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}))