Hi,
This is a cross post from
http://forum.springsource.org/showthread.php?120071-Inheritance-in-spring-data-neo4j
I'm using spring-data-neo4j in an object model with inheritance, with a
base class Video, a subclass YoutubeVideo and a VideoRepository. The
Video base class contains a field "id", which uses @Indexed
When I save a Video instance with an id field a call to
VideoRepository.findById returns the object.
However, if I save a YoutubeVideo, the same call to
VideoRepository.findById returns null.
Why do I get a different behavior here?
Here are the model classes:
@NodeEntity
public class Video {
@GraphId
public Long nodeId;
@Indexed
public String id;
@Indexed
public String title;
public String description;
public String originalTitle;
public String thumbnailUrl;
}
public class YoutubeVideo extends Video {
public String youtubeId;
}
public interface VideoRepository extends GraphRepository<Video>,
NamedIndexRepository<Video>,
RelationshipOperationsRepository<Video> {
Video findById(String id);
}
Here is the test code I use. The second test fails.
@Test
public void findVideo() {
Video video = new Video();
video.setId("test.new");
videoRepository.save(video);
Video existing = videoRepository.findById(video.getId());
assertNotNull(existing);
videoRepository.delete(existing);
existing = videoRepository.findById(video.getId());
assertNull(existing);
}
@Test
public void findVideoSubclass() {
YoutubeVideo video = new YoutubeVideo();
video.setId("test.subclass");
videoRepository.save(video);
Video existing = videoRepository.findById(video.getId());
assertNotNull(existing); <--------- fails
videoRepository.delete(existing);
existing = videoRepository.findById(video.getId());
assertNull(existing);
}
--
Nils Kaiser
MSc in Information Systems
_______________________________________________
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register
and consider posting at https://groups.google.com/forum/#!forum/neo4j
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user