2015-11-27 1 views
0

J'ai commencé à utiliser Neo4j-ogm dans mon application et cela fonctionne comme un charme pour un modèle de domaine d'objet fixe. Quand je sais quel type de nœud est connecté à un autre nœud avec un type connu, il peut facilement être mappé. Cependant, à mon avis la versitalité de la base de données graphique Neo4j est également dans une capacité à travailler avec des modèles de domaine non typés (ou dynamiques) et j'ai un problème conceptuel pour comprendre comment l'obtenir avec Neo4j-ogm. Permettez-moi de décrire mon problème avec un exemple.Neo4j-Ogm pour le modèle d'objet de domaine dynamique

J'ai des objets de domaine comme: Message et fonctionnalité. Où Message peut avoir plusieurs fonctionnalités et une fonctionnalité peut faire partie de plusieurs messages. Il est complètement ok à la carte avec Neo4j-ogm.

Alors, que se passe-t-il si l'utilisateur souhaite associer le message à un type de nœud Tâche ou le renvoyer à un type de nœud Contact? Dans mon application, il est possible d'avoir un grand ensemble (mais limité) de connexion entre des nœuds de différents types. Donc, je voudrais pouvoir obtenir tous les types de connexions à partir d'un nœud particulier, indépendamment de ces types de connexion ou types endNode?

Bien sûr, je peux utiliser Cypher pour créer des connexions comme ceci:

MATCH ($2911) WHERE id($2911)={$2911} MATCH ($2912) WHERE id($2912)={$2912} MERGE ($2911)-[_0:`part_of` {$aid} ]->($2912) RETURN id(_0) AS _0 

mais quand je commence à faire cela - je besoin d'un moyen comment convertir les résultats de cette requêtes et à des entités relationnelles moi-même .

Existe-t-il une manière élégante de le faire en utilisant Neo4j-ogm. Peut être qu'il est possible de créer une hiérarchie de type comprehansive ou quelque chose qui permettra d'utiliser Neo4j-ogm ensemble pour des modèles d'objets de domaine fixes et dynamiques.

Merci d'avance.

Répondre

0

Une hiérarchie de type fixe est prise en charge par Neo4j OGM, donc si vous êtes capable de représenter votre domaine dans une telle hiérarchie, vous devriez être en mesure d'extraire toutes les connexions d'une seule entité. Cela signifie que les nœuds d'extrémité doivent également être représentés dans cette hiérarchie.

Le polymorphisme d'exécution n'est pas pris en charge dans la version actuelle. Il est cependant sujet à discussion, et selon la façon dont cela se passe, il pourrait être publié dans une version ultérieure.

+0

Merci pour votre réponse. Néanmoins j'ai décidé de rester avec Neo4j-ogm comme c'est une très belle bibliothèque et beaucoup plus avancé que l'outil de mien pour accéder à Neo4j. Afin de résoudre mon problème avec le domaine fixe, je prévois d'utiliser des requêtes Cypher pour obtenir des connexions non mappées à partir de n'importe quel nœud. – Vladimir