java - Spring Data Neo4j "No property get found for type"异常

标签 java spring neo4j spring-data-neo4j

我正在尝试将现有项目转换为使用 Spring Data 和 Neo4j,但遇到了一些问题。当我尝试构建项目时,出现以下异常:

[etc. ...]
Caused by: 
org.springframework.data.mapping.PropertyReferenceException: No property get found for type com.myproject.models.SuperNode
    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
[... etc.]

我似乎找不到任何关于为什么会出现该错误的好信息,并且我不确定到底是什么导致了该错误。

这是 SuperNode 类的大部分内容:

@NodeEntity
public class SuperNode extends AbstractMapValues {

    @GraphId
    private Long superNodeId;

    @NotNull
    private boolean superNodeFullyGenerated = false;

    private BaseLandType likelyLandType;

    private BaseLandType unlikelyLandType;

[methods and such]
}

它源自 AbstractMapValues 类:

@NodeEntity
public abstract class AbstractMapValues implements Comparable<AbstractMapValues> {

    @GraphId
    public Long id;

    @Range(min = 0, max = MAX_MAP_INT)
    private int xCoor;

    @Range(min = 0, max = MAX_MAP_INT)
    private int yCoor;

    //set only when x and y are set
    @Indexed(indexType = IndexType.POINT)
    private String wkt;

    @Range(min = BASIC_MIN, max = BASIC_MAX)
    private int percipitation;

    @Range(min = -1, max = BASIC_MAX)
    private int topography;

    @Range(min = BASIC_MIN, max = BASIC_MAX)
    private int seaLevel;

 [more int fields, but you get the picture]
 }

如您所见,这些旨在表示 map 中的点。我的项目中有 Neo4j 空间依赖项,它应该允许我使用 IndexType.POINT。

然后我就有了 SuperNode 的存储库。我有基本的 CRUD 类型存储库接口(interface),这是一个由基本存储库实现的自定义接口(interface),这样我就可以实现自定义接口(interface)并写出需要使用 Neo4j-spatial 库的 get 方法.

基本仓库:

public interface SuperNodeRepo extends CRUDRepository<SuperNode>, SpatialRepository<SuperNode>, SuperNodeRepoCustom {

}

自定义界面:

@NoRepositoryBean
public interface SuperNodeRepoCustom {

    public SuperNode getSuperNode(int xCoorSuperNode, int yCoorSuperNode) ;

    public List<SuperNode> getSuperNodes(int xmax, int xmin, int ymax, int ymin) ;

}

自定义实现(如您所见,目前尚未完成):

公共(public)类 SuperNodeRepoCustomImpl 实现 SuperNodeRepoCustom {

public SuperNode getSuperNode(int xCoorSuperNode, int yCoorSuperNode) {
    return null;
}

public List<SuperNode> getSuperNodes(int xmax, int xmin, int ymax, int ymin) {
    return null;
}

}

我尝试将 @Indexed 直接添加到 super 节点中的新字段,但这没有帮助。我已经尝试过,没有扩展spatialRepo。

当我在没有扩展自定义界面的情况下尝试它时,我收到了不同的错误:

No matching bean of type [com.orclands.game.models.SuperNode] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

但我还是不知道为什么会这样。所以最后我有两个问题。 A. 我的自定义接口(interface)实现有什么问题,B. 除此之外还有什么问题!

任何帮助将不胜感激!

最佳答案

**@Repository**
public interface SuperNodeRepo extends CRUDRepository<SuperNode>, SpatialRepository<SuperNode>, SuperNodeRepoCustom {

}

关于java - Spring Data Neo4j "No property get found for type"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15050267/

相关文章:

java - Neo4j 与 Spring : No bean named 'getSessionFactory' available

java - LibGDX - 如何使文本居中?

Windows 中的 Java 和符号链接(symbolic link)

java - 调用 new 和 getInstance() 的区别

java - 在游戏中输入!日期和时间?

java - 在现有的 Axis 1.4 web 服务中从 Spring 2.5 迁移到 3

java - 无法使用 Spring Data Redis 持久化数据

java - 这是 TransactionEventHandler 的正常行为吗?

Neo4j 加载 CSV 以创建动态关系类型

java - 如何使用 webflux Webclient 创建带参数的请求?