2016-09-04 3 views
1

У меня есть 2 таблицыимеет много-не работает

CREATE TABLE public.user_account 
(
    id integer NOT NULL DEFAULT nextval('user_account_id_seq'::regclass), 
    email character(50) NOT NULL, 
    password character(100) NOT NULL, 
    CONSTRAINT user_account_pkey PRIMARY KEY (id) 
) 

CREATE TABLE public.recipe 
(
    id integer NOT NULL DEFAULT nextval('recipe_id_seq'::regclass), 
    user_account_id integer NOT NULL, 
    name text NOT NULL, 
    description text NOT NULL, 
    CONSTRAINT recipe_pkey PRIMARY KEY (id), 
    CONSTRAINT recipe_user_account_id_fkey FOREIGN KEY (user_account_id) 
     REFERENCES public.user_account (id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
) 

Это моя Clojure декларация

(declare user_account recipe) 

(kc/defentity user_account 
      (kc/entity-fields :email :password) 
      (kc/has-many recipe {:fk :user_account_id}) 
      ) 

(kc/defentity recipe 
       (kc/entity-fields :user_account_id :name :description) 
       (kc/belongs-to user_account {:fk :user_account_id}) 
      ) 

И я не могу выбрать user_account таблицу с recipe

user=> (sql-only (kc/select user_account (with recipe) (where {:id 1}))) 
"SELECT \"user_account\".\"email\", \"user_account\".\"password\" FROM \"user_account\" WHERE (\"user_account\".\"id\" = ?)" 

ответ

1

Я столкнулся с той же проблемой. Решением было добавление поля pk в список entity-fields в родительском объекте. Это действительно неинтуитивно, и кажется, что проблема в плохой документации. Таким образом, решение должно быть:

(declare user_account recipe) 

(kc/defentity user_account 
      (kc/entity-fields :id :email :password) 
;       ^^^ fix is here 
      (kc/has-many recipe {:fk :user_account_id}) 
      ) 

(kc/defentity recipe 
       (kc/entity-fields :user_account_id :name :description) 
       (kc/belongs-to user_account {:fk :user_account_id}) 
      ) 
+1

A переключилось на yesql из-за этой проблемы, а также на плохую документацию. Но спасибо за ответ – nam

Смежные вопросы