2014-03-24 4 views
0

SDN v3.0.0 유출 Neo4j 커뮤니티 나 상속에 관해서 및 징수에 문제가 조금 데 2.0.1봄 - 데이터 - Neo4J 클래스 다형성

. 아마도 누군가가 그 문제를 도울 수 있습니다. 기본적으로 다음과 같은 구조를 가지고 있습니다.

public abstract class Graphic; 

public class Shape1 extends Graphic; 

public class Shape2 extends Graphic; 

public class Shape3 extends Graphic; 

public class Overlay { 

    Set<Graphic> graphics; 

} 

public interface GraphicsRepository extends GraphRepository<Graphic>{} 

그래픽 저장소를 사용하여 그래픽을 유지할 수 있으며 모든 다양한 속성은 구체적인 클래스를 기반으로 올바르게 저장됩니다. 올바른 속성으로 쿼리하고 개별 그래픽을 얻을 수 있으며 neo4j "포털"환경의 클래스와 관련된 다양한 작업을 수행 할 수 있습니다. 하지만 내가 오버레이에서 검색 할 때 나는 컬렉션 내의 클래스 유형으로 기본 클래스 Graphic 만 가져오고 캐스팅은 작동하지 않습니다. 나는 뭔가를 간과하거나 올바르게 행동하지 않을 수도 있지만 누군가가 제안 할 수있는 것이 있는지 게시하고 볼 것입니다. Google 검색 및 오버플로 스택을 검색하여 주요 클래스 였고 개체의 내부 컬렉션이 아닌 비슷한 문제 만 발견했습니다.

또한 그래픽 클래스에서 추상을 제거하면 같은 결과가 나타납니다. 오버레이 그래픽 세트의 모든 항목은 그래픽 유형입니다. @TypeAlias를 추가해도 도움이되지 않습니다.

감사

답변

1

좋아,이 문제는 ... 어리석은 느낌이 들지만 그래픽 컬렉션에 @Fetch를 넣는 것을 잊어 버렸다. 이상하게도 그래픽 객체를 가져 오지만 모두 Graphic 유형입니다. 가져 오기를 컬렉션에 추가하면 컬렉션 항목이 올바른 유형으로 검색되었습니다.

0

실제로 SDN은 그것이 "_"로 미리 결정되어 3.0.1 (가장 구체적인 유형 즉, 엔티티를 구성하는 그래프 저장 타입을 사용해야하므로 "_Shape1"이어야 등)

그래프의 노드 레이블을 확인할 수 있습니까?

+0

마이클, 답장을 보내 주셔서 감사합니다. 그래프에서 라벨을 확인한 결과 모든 노드의 라벨 앞에 "_"이 붙습니다. 다른 클래스를 확장하는 모든 클래스에도 상위 클래스 레이블이 있습니다. 그러나 오버레이 내에서 컬렉션에 액세스 할 때 형식은 항상 반복자를 통해 각 루프 등에 관계없이 그래픽입니다. –

+0

자세한 조사에 따르면 그래픽을 검색 할 때 GraphicRepository findAll이 유형 정보를 유지한다는 것을 보여줍니다. 그러나 그래픽 컬렉션을 검색 할 때 OverlayRepository는 그렇지 않습니다. 내가 그 (것)들을 우연히 만나기 때문에 세부 사항을 공유 할 것이다. –