对于具有多个标签的节点,Neo4j.rb返回具有不正确类的模型

时间:2016-05-19 12:28:56

标签: neo4j.rb

我有两个ActiveNode模型:

@Entity
public class Schedule extends PersistentObject implements Comparable<Schedule> {
   private String title;

   @ManyToOne
   private Agent target;

   @ElementCollection
   @MapKeyColumn(nullable = false)
   @Column(nullable = false)
   private Map<Long, List<Role>> assignedRoles = new HashMap<>();

   //gets e setters
}

class Company
  include Neo4j::ActiveNode
end

它们对应于标签&#34;实体&#34;和&#34;公司&#34;,它们连接到同一节点。所以,一个节点,是一个实体和一个公司。

在我的控制台中,当我尝试以下查询时:

class Entity
  include Neo4j::ActiveNode
end

它返回一个Company对象:

Entity.where(entity_id: 1).first

我不想要那个。如果我要求实体,我想要一个实体返回。实体模型定义的方法与公司模型不同。无论如何我能执行正确的行为吗?它的表现似乎相当直观。

我正在使用neo4j 3.0和neo4j.rb 7.0.3

1 个答案:

答案 0 :(得分:0)

这是一个好点。如果两个标签都可以匹配,那么它应该使用用于进行查找的类。

但是,我对你的建模感到好奇。 Company节点是否可以不是Entity,反之亦然?或者,例如,Company总是一种Entity?如果是这样,您可能想要使用inheritence:

class Entity
  include Neo4j::ActiveNode
end

class Company < Entity
  # No need to include Neo4j::ActiveNode
end

但部分问题是Company个节点继承Entity的行为/逻辑是否有意义