我試圖將現有項目轉換爲使用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