2

スーパータイプをラベルの1つとして保存できるNeo4jの機能は本当に素晴らしいのですが、思ったようにスーパータイプのセットを取得できません。

スーパークラスは Service と呼ばれます

@NodeEntity
public abstract class Service implements java.io.Serializable {...}

サブクラスは HostingService と呼ばれます

@NodeEntity
public class HostingService extends Service implements java.io.Serializable{

    @GraphId Long id;
        ....
}

そして、一連の Service を所有する SystemCatalog というクラスがあります。

@NodeEntity
public class SystemCatalog implements java.io.Serializable{

     @GraphId Long id;
     .... 

     @Relationship(type="SERVICE", direction=Relationship.OUTGOING)
     private Set<Service> services = new HashSet<>();

}

保存テスト メソッドはうまくいきます。neo4j ブラウザーは、HostingService が両方のラベル (Service と HostingService) で保存されていることを示しています。

   @Test 
public void testSaveService(){

    SystemCatalog sys = new SystemCatalog();
    sys.setSystemName("Test Service");

    HostingService host = new HostingService();
    host.setCostCenter("Cost Center A");

    sys.getServices().add(host);

    Long id = systemCatalogRepository.save(sys).getId();
    System.out.println(id);

}

取得したテスト メソッドが間違っていました。返された SystemCatalog にはサービスがまったくありません

@Test
public void testGetService(){

    SystemCatalog sys2 = systemCatalogRepository.findOne(new Long(243));
    System.out.println(sys2);

}
4

1 に答える 1

2

これはバグです。コードは正常に見えます。

https://jira.spring.io/browse/DATAGRAPH-735に従って追跡してください。

于 2015-08-12T05:01:32.653 に答える