2013-02-24 86 views
1

我試圖將現有項目轉換爲使用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.除此之外哪些是錯誤的!

任何幫助將不勝感激!

+1

您的層次結構中應該只有一個@GraphId註釋。 – 2013-02-24 20:39:14

+0

你有github上的項目還是要看看它的地方? – 2013-02-24 20:39:31

+0

嗯,我刪除了額外的@GraphId,但我仍然得到「沒有匹配的類型[com.orclands.game.models.SuperNode]類型的錯誤」的錯誤。恐怕我只有在私人存儲庫上,因爲這是個人項目。如果可能有任何我遺漏的東西,我可以提供更多信息。 – CorayThan 2013-02-24 20:53:49

回答

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

} 
相關問題