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\" = ?)"
4

1 回答 1

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})
              )
于 2016-10-10T12:59:35.487 回答