Mon schéma ressemble à quelque chose comme ceci:many-to-one attribue à Storm
CREATE TABLE plans (
id SERIAL PRIMARY KEY,
description text
);
CREATE TABLE projects (
id SERIAL PRIMARY KEY,
project_id character varying(240) UNIQUE,
plan_id integer REFERENCES plans(id) ON DELETE CASCADE
);
Et je veux faire des requêtes de tempête le long des lignes de
plan = store.find(Plan, Plan.project_id == "alpha")
# should translate to something like
# SELECT p.* from plans p LEFT JOIN projects proj ON p.id = proj.plan_id
# WHERE proj.project_id = 'alpha';
(Notez que projects.plan_id
n'est pas unique .)
Comment puis-je configurer ceci?
Ça a l'air bien. Je suppose que je m'attendais à pouvoir définir la relation Plan.id == Project.plan_id dans un attribut de Plan, et pas explicitement dans l'expression de recherche, mais cela fonctionne. – keturn
Eh bien, en fonction de la façon dont vous structurez votre code, l'ajout de propriétés Reference ou ReferenceSet à vos classes pourrait mieux répondre à vos besoins. Par exemple, si vous avez déjà récupéré la ligne correspondante du projet, vous pouvez accéder au plan en tant que "project.plan" si vous avez défini une référence sur la classe Project comme suit: plan = Reference (plan_id, Plan.id) Mais si je commençais avec le nom du projet et que je voulais le plan directement, alors l'instruction unique find() entraînerait moins de requêtes. –