2013-04-16 17 views
1

我可以添加和保存多個SchoolRef,但是在獲取(祖先和熱切地獲取)教育對象,然後嘗試添加另一個SchoolRef。這與SDN 2.0.1一起工作,但我也改變了其他的東西,包括下面的Repository/Cypher查詢,所以我無法將它隔離到升級。SDN 2.1.0/neo4j 1.8:java.lang.IllegalArgumentException:無法獲取字段'schoolRef'的單個字段值

@Fetch @RelatedTo(type = "EDUCATION_HAS_SCHOOLREF") 
private Set<SchoolRef> schoolRefs = new HashSet<SchoolRef>(); 

public Education() { 
} 

public void addSchoolRef(SchoolRef schoolRef) { 
    getSchoolRefs().add(schoolRef); 
} 

庫:

public interface UserRepository extends GraphRepository<User>, CypherDslRepository<User> { 

@Query("start id=node:Identifier(identifier={0}) match id<-[:USER_HAS_IDENTIFIER]-user return user") 
public User findById(String id); 

堆棧跟蹤:

Caused by: java.lang.IllegalArgumentException: Cannot obtain single field value for field 'schoolRef' 
    at org.springframework.data.neo4j.fieldaccess.RelatedToSingleFieldAccessorFactory$RelatedToSingleFieldAccessor.getValue(RelatedToSingleFieldAccessorFactory.java:94) 
    at org.springframework.data.neo4j.fieldaccess.DefaultEntityState.getValue(DefaultEntityState.java:97) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.copyEntityStatePropertyValue(SourceStateTransmitter.java:90) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.access$000(SourceStateTransmitter.java:40) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter$2.doWithAssociation(SourceStateTransmitter.java:61) 
    at org.springframework.data.mapping.model.BasicPersistentEntity.doWithAssociations(BasicPersistentEntity.java:207) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.copyPropertiesFrom(SourceStateTransmitter.java:57) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.loadEntity(Neo4jEntityConverterImpl.java:100) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.read(Neo4jEntityConverterImpl.java:92) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister$CachedConverter.read(Neo4jEntityPersister.java:170) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister.createEntityFromState(Neo4jEntityPersister.java:189) 
    at org.springframework.data.neo4j.support.Neo4jTemplate.createEntityFromState(Neo4jTemplate.java:180) 
    at org.springframework.data.neo4j.fieldaccess.RelationshipHelper.createEntitySetFromRelationshipEndNodes(RelationshipHelper.java:130) 
    at org.springframework.data.neo4j.fieldaccess.RelatedToFieldAccessor.createEntitySetFromRelationshipEndNodes(RelatedToFieldAccessor.java:86) 
    at org.springframework.data.neo4j.fieldaccess.RelatedToSingleFieldAccessorFactory$RelatedToSingleFieldAccessor.getValue(RelatedToSingleFieldAccessorFactory.java:76) 
    at org.springframework.data.neo4j.fieldaccess.DefaultEntityState.getValue(DefaultEntityState.java:97) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.copyEntityStatePropertyValue(SourceStateTransmitter.java:90) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.access$000(SourceStateTransmitter.java:40) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter$2.doWithAssociation(SourceStateTransmitter.java:61) 
    at org.springframework.data.mapping.model.BasicPersistentEntity.doWithAssociations(BasicPersistentEntity.java:207) 
    at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.copyPropertiesFrom(SourceStateTransmitter.java:57) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.loadEntity(Neo4jEntityConverterImpl.java:100) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.read(Neo4jEntityConverterImpl.java:92) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister$CachedConverter.read(Neo4jEntityPersister.java:170) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister.createEntityFromState(Neo4jEntityPersister.java:189) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister.persist(Neo4jEntityPersister.java:244) 
    at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister.persist(Neo4jEntityPersister.java:231) 
    at org.springframework.data.neo4j.support.Neo4jTemplate.save(Neo4jTemplate.java:293) 
    at org.springframework.data.neo4j.support.Neo4jTemplate.save(Neo4jTemplate.java:287) 
    at org.springframework.data.neo4j.fieldaccess.RelationshipHelper.getOrCreateState(RelationshipHelper.java:119) 
    at org.springframework.data.neo4j.fieldaccess.RelationshipHelper.createSetOfTargetNodes(RelationshipHelper.java:111) 
    at org.springframework.data.neo4j.fieldaccess.RelatedToFieldAccessor.createSetOfTargetNodes(RelatedToFieldAccessor.java:82) 
    at org.springframework.data.neo4j.fieldaccess.RelatedToCollectionFieldAccessorFactory$RelatedToCollectionFieldAccessor.setValue(RelatedToCollectionFieldAccessorFactory.java:66) 
    at org.springframework.data.neo4j.fieldaccess.ManagedFieldAccessorSet.updateValue(ManagedFieldAccessorSet.java:94) 
    at org.springframework.data.neo4j.fieldaccess.ManagedFieldAccessorSet.update(ManagedFieldAccessorSet.java:82) 
    at org.springframework.data.neo4j.fieldaccess.ManagedFieldAccessorSet.add(ManagedFieldAccessorSet.java:108) 

----編輯: 同樣的錯誤,而是根據不同的情況..

School school = new School(); 
    school = neo4j.repositoryFor(School.class).save(school); 

    User user1 = new User("Junit", "1"); 
    SchoolRef schoolRef1 = new SchoolRef(); 
    schoolRef1.setSchool(school); 
    user1.addSchoolRef(schoolRef1); 
    user1 = neo4j.repositoryFor(User.class).save(user1); 

    User user2 = new User("Junit", "2"); 
    SchoolRef schoolRef2 = new SchoolRef(); 
    schoolRef2.setSchool(school); 
    user2.addSchoolRef(schoolRef2); 
    user2 = neo4j.repositoryFor(User.class).save(user2); // <- error here 
+0

你如何獲得教育實體?通過Neo4jTemplate,一個存儲庫,一個密碼查詢,...? – tstorms

+0

你的班上似乎有一個叫'schoolRef'的成員,而你在'schoolRefs'找錯了? –

+0

@tstorms我更新了存儲庫和密碼查詢的問題。 –

回答

3

有時我可能對ob是盲目的vious problem ...

就我而言,SchoolRef參考了一所學校,但學校可以有很多學校參考。我錯誤地實施了學校提供一份參考資料給學校參考。

我能夠創建多個引用單個School的SchoolRef,但是當我試圖獲取具有多個引用的School時發生此錯誤。

-1

我們也遇到了這個問題,但它是由於與同一標籤有單獨的關係。