微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Data Neo4j 4.2 查询标签或节点 id 总是返回 null

如何解决Spring Data Neo4j 4.2 查询标签或节点 id 总是返回 null

目前,我正在使用 Spring Boot 和 Neo4j 构建图形可视化应用程序。但是当我从我的实体 Neo4jRepository 调用一个方法获取 NodeEntity 标签时,它总是返回一个空值。我的节点实体有问题吗?

这是我的节点实体

@NodeEntity(label="Personnel")
public class PersonnelNode {

    private Long id;
    
    @Labels
    private Set<String> labels;
    
    @GraphId
    private Long personnelId;
    
    private String personnelKey;    
    
    private String personnelNameIN;
    
    private Boolean isTeamleader;
    
    private Boolean isQA;
    
    private Boolean isSuperUser;
    
    private Short companyGroupId;

    private Boolean isActive;

    private Timestamp created;

    private String createdBy;

    private Timestamp lastModified;

    private String lastModifiedBy; 

    @Relationship(type="PERSONNEL_TASK",direction=Relationship.OUTGOING)
    private TaskNode personnelTasks;
    
    private Long employeeDataId;

    public PersonnelNode() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Set<String> getLabels() {
        return labels;
    }

    public void setLabels(Set<String> labels) {
        this.labels = labels;
    }

    public Long getPersonnelId() {
        return personnelId;
    }

    public void setPersonnelId(Long personnelId) {
        this.personnelId = personnelId;
    }

    public String getPersonnelKey() {
        return personnelKey;
    }

    public void setPersonnelKey(String personnelKey) {
        this.personnelKey = personnelKey;
    }

    public String getPersonnelNameIN() {
        return personnelNameIN;
    }

    public void setPersonnelNameIN(String personnelNameIN) {
        this.personnelNameIN = personnelNameIN;
    }

    public Boolean getIsTeamleader() {
        return isTeamleader;
    }

    public void setIsTeamleader(Boolean isTeamleader) {
        this.isTeamleader = isTeamleader;
    }

    public Boolean getIsQA() {
        return isQA;
    }

    public void setIsQA(Boolean isQA) {
        this.isQA = isQA;
    }

    public Boolean getIsSuperUser() {
        return isSuperUser;
    }

    public void setIsSuperUser(Boolean isSuperUser) {
        this.isSuperUser = isSuperUser;
    }

    public Short getCompanyGroupId() {
        return companyGroupId;
    }

    public void setCompanyGroupId(Short companyGroupId) {
        this.companyGroupId = companyGroupId;
    }

    public Boolean getIsActive() {
        return isActive;
    }

    public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
    }

    public Timestamp getCreated() {
        return created;
    }

    public void setCreated(Timestamp created) {
        this.created = created;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public Timestamp getLastModified() {
        return lastModified;
    }

    public void setLastModified(Timestamp lastModified) {
        this.lastModified = lastModified;
    }

    public String getLastModifiedBy() {
        return lastModifiedBy;
    }

    public void setLastModifiedBy(String lastModifiedBy) {
        this.lastModifiedBy = lastModifiedBy;
    }

    public Long getEmployeeDataId() {
        return employeeDataId;
    }

    public void setEmployeeDataId(Long employeeDataId) {
        this.employeeDataId = employeeDataId;
    }

    public TaskNode getPersonnelTasks() {
        return personnelTasks;
    }

    public void setPersonnelTasks(TaskNode personnelTasks) {
        this.personnelTasks = personnelTasks;
    }

}

我的道课

@Component
public class PersonnelNodeDao implements IPersonnelNodeDao {

    private PersonnelNodeRepository personnelRepository;
    
    @Autowired
    public PersonnelNodeDao(PersonnelNodeRepository personnelRepository) {
        this.personnelRepository = personnelRepository;
    }

    @Override
    public PersonnelNode getByEmployeeDataId(Long employeeDataId) {
        return personnelRepository.findByEmployeeDataId(employeeDataId);
    }

    @Override
    public PersonnelNode getByPersonnelId(Long personnelId) {
        return personnelRepository.findByPersonnelId(personnelId);
    }

    @Override
    public Object getLabelsByPersonnelId(Long personnelId) {
        return personnelRepository.getLabelsByPersonnelId(personnelId);
    }

}

这是我的 Neo4jRepository 类

public interface PersonnelNodeRepository extends Neo4jRepository<PersonnelNode,Long> {

@Query(""
        +"MATCH (p:Personnel)-[r:PERSONNEL_EMPLOYEE]->(e:Employee) "
        + "WHERE e.employeeDataId = {0} RETURN p")
PersonnelNode findByEmployeeDataId(Long employeeDataId);

@Query("MATCH (p:Personnel) WHERE p.personnelId = {0} RETURN p,ID(p),labels(p)")
PersonnelNode findByPersonnelId(Long personnelId);

@Query(""
        + "MATCH p=(n:Personnel)-[r:PERSONNEL_TASK]->(t:Task {isActive: true}) "
        + "<-[pt:PROJECT_TASK]-(j:Project) "
        + "WHERE n.personnelId= {0} "
        + "RETURN nodes(p) as nodes,rels(p) as relationships")
List<Graph<PersonnelNode>> getPersonnelLoadTaskGraphByEmployeeDataId(Long employeeDataId);

@Query("MATCH (p:Personnel) WHERE p.personnelId = {0} RETURN labels(p)")
Object getLabelsByPersonnelId(Long personnelId);

}

这是我调用方法的服务

Object nodePersonnel = personnelNodeDao.getLabelsByPersonnelId(Long.valueOf("2"));

当我在我的服务中也在我的存储库中使用我的节点实体设置返回变量时,结果是相同的,它总是返回空值

PersonnelNode nodePersonnel = personnelNodeDao.getByPersonnelId(Long.valueOf("2"));

实际上我的问题是,只针对这个实体。对于另一个实体,我可以获得节点 ID 和标签。这是人事实体的数据返回。 Data Retrun From PersonnelRepository

仅供参考,我使用的是 Spring Data Neo4j 4.2、spring boot 1.5.2 和 ogm 2.1。之前谢谢你。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。