我试图将现有项目转换为使用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.]
我似乎无法找到我为什么会得到这个错误有什么好的信息,我不知道究竟是什么原因造成它。
这里是大多数超节点类:
@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]
}
正如你可以看到这些意味着在地图上表示点。我的项目中有一个Neo4j空间依赖关系,它应该允许我使用IndexType.POINT。
然后我有超节点的存储库。我有我的基本CRUD类型的存储库接口,它是一个由基本存储库实现的自定义接口,这样我就可以实现自定义接口并写出将要求使用Neo4j空间库的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) ;
}
自定义执行(你可以看到它是目前不完整):
公共类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,但这没有帮助。我试过了,没有扩展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.我的自定义接口实现中出现了什么问题,以及B.除此之外哪些是错误的!
任何帮助将不胜感激!
您的层次结构中应该只有一个@GraphId注释。 – 2013-02-24 20:39:14
你有github上的项目还是要看看它的地方? – 2013-02-24 20:39:31
嗯,我删除了额外的@GraphId,但我仍然得到“没有匹配的类型[com.orclands.game.models.SuperNode]类型的错误”的错误。恐怕我只有在私人存储库上,因为这是个人项目。如果可能有任何我遗漏的东西,我可以提供更多信息。 – CorayThan 2013-02-24 20:53:49