我有以下课程:
public interface Label {
String getValue();
}
@Node
@Data
public class SimpleLabel implements Label {
@Id
@GeneratedValue
private Long id;
private String value;
@Relationship(value = "JE")
private Set<SimpleLabel> labels = new HashSet<>();
public void addLabel(SimpleLabel label){
labels.add(label);
}
}
@Node
@Data
public class HyperLabel implements Label {
@Id
@GeneratedValue
private Long id;
@Relationship(value = "JE")
private Set<Label> labels = new HashSet<>();
public void addLabel(Label label){
labels.add(label);
}
@Override
public String getValue() {
return labels.stream().map(Label::getValue).collect(Collectors.joining("; "));
}
}
这是我使用的查询:
@Query("MATCH (h:HyperLabel)-[r:JE]-(s:SimpleLabel) WHERE ID(h)=$id RETURN h,COLLECT(r),COLLECT(s)")
Optional<HyperLabel> getById(Long id);
我的问题是
labels
查询返回的集合为空。但如果我在密码上稍作修改
HyperLabel
阶级(变化)
Set<Label>
到
Set<SimpleLabel>
),然后它就工作了。
有什么方法可以让它与
Label
接口,因为
超标签
两者都可以
超标签
和
SimpleLabel
实例?