2015-05-28 316 views
2

希望我的團隊在這裏做一些愚蠢的事情,但是,使用SDN 3.3來對抗Neo4j 2.1.6,當試圖獲取特定實體時,我得到一個PersistentEntityConversionException。Spring Data Neo4j 3.3:PersistentEntityConversionException

的數據模型是這樣的:

  • 有一個基本節點實體模型,把它叫做A.它是抽象的SDN(它實際上由一對夫婦的其他類下降,但根本是@NodeEntity) 。
  • 有兩臺同級實體,每個從A下降撥打這些B和C.

我執行的Cypher查詢,有效地查找節點與來自標籤(其中應包括B和C)。 Java代碼看起來有點像這樣:

List<A> nodeList = this.repo.getNodes(); 

我得到的查詢回來,然後遍歷這些結果,並使用模板,「取」的結果。最終,我得到這個例外:

org.springframework.data.neo4j.mapping.PersistentEntityConversionException: Requested a entity of type 'class B', but the entity is of type 'class C'. 

這種抓取方法用於在SDN 3.2.1中工作。

任何援助將不勝感激。

在此先感謝!

回答

0

一些更多的挖掘後,我發現我的問題的原因,我會承認,我覺得有點塗料。

實際上,域中的模型比我發佈的模型稍微複雜一些(並且更深一些)。對我來說,這個問題歸結爲需要設置enforceTargetType爲true,並且還設置elementClass到目標類型。

換句話說,我的A類與另一個模型(稱爲M)有關係,並且該關係沒有正確註釋。

我最終追查了一小段SDN代碼,發現只有當我試圖與關聯的M類建立關係時纔會感到困惑。

儘管如此,Leward的回答在類似的情況下可能會幫助其他人。

0

我有同樣的問題,這看起來像在Spring數據Neo4j的一個bug。

我發現一個解決方法,使其工作:禁用Spring Data Neo4j中的類型安全檢查。

在Spring XML情況下,只需添加:

<bean id="typeSafetyPolicy" class="org.springframework.data.neo4j.support.typesafety.TypeSafetyPolicy"> 
    <constructor-arg value="NONE" /> 
</bean> 

請記住這可能引起不良副作用。請參閱文檔:http://docs.spring.io/spring-data/data-neo4j/docs/3.3.0.RELEASE/reference/html/#entity_type_safety

+0

感謝。也許Michael Hunger或某人可以對此發表評論?如果沒有其他事情可以回來,我會將其標記爲答案。 – BtySgtMajor

+0

好了,解決了該問題,但推出的又一通過的instanceof特定的抽象對象即檢查。如上所述,可能會產生副作用。 – BtySgtMajor

相關問題