我正在使用neo4j + spring数据。要访问我使用接口的数据,扩展GraphRepository<E>
。例如
public interface EntryRepository extends GraphRepository<Entry> {
@Query("start parent=node({0}), entry=node({1}) "
+ "match parent-[*1..2{removed:false}]->entry "
+ "return distinct entry")
Entry findOne(Long parentId, Long entryId);
}
我正在尝试获取与我的域模型不同的数据。我的自定义模型看起来像那样
@QueryResult
public class EntryBean {
@ResultColumn("id")
private Long id;
@ResultColumn("name")
private String name;
@ResultColumn("content")
private String content;
...
//getters and setters
}
@QueryResult
public class BoardBean {
@ResultColumn("id")
private Long id;
@ResultColumn("name")
private String name;
...
//getters and setters
}
显然,最好将重复字段分隔为Base类并从中继承。所以,我正在做下一步
@QueryResult
public class BaseBean {
@ResultColumn("id")
private Long id;
@ResultColumn("name")
private String name;
...
}
@QueryResult
public class EntryBean extends BaseBean{
@ResultColumn("content")
private String content;
...
//getters and setters
}
我不再需要BoardBean了。但是当我尝试运行查询时
public interface EntryRepository extends GraphRepository<Entry> {
@Query("start user=node({0}), board=node({1}) "
+ "... "
+ "return id(entry) as id, entry.name as name, entry.content as content")
List<EntryBean> getRelatedEntries(Long userId, Long boardId);
}
我被数据填充只是直接声明为EntryBean
类的字段(即“内容”字段)。
那么,我如何才能正确实现@QueryResult
类层次?