我有两个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
答案 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
的行为/逻辑是否有意义