我是Neo4J的新手;我正在开发一个用于学习目的的项目,我正面临着一个我无法解决的问题。我的模型可能会受到一些关系数据库的影响,但除了设计问题之外,我相信不管我在尝试什么应该在技术上完成。
我有一个NodeEntity
Foo
,其嵌套对象Bar
已转换为 - String
通过ConversionService
。实际上,Bar
只包含一个String
字段,这使得映射变得微不足道。
@NodeEntity
public class Foo {
@GraphId
private Long id;
@Indexed
private Bar bar;
...
}
public class Bar {
private String value;
...
}
从我的存储库中如下定义的相当简单的Cypher查询返回时:
@RepositoryRestResource(...)
public interface FooRepository
extends PagingAndSortingRepository<Foo, Long> {
...
@Query ("MATCH (foo) RETURN foo.bar")
Iterable<Bar> listBars ();
...
}
转换配置如下:
@Configuration
@ComponentScan(value = "de.h7r.playground.sd.neo4j",
excludeFilters = @ComponentScan.Filter({ Configuration.class }))
public class PKanbanConfiguration {
@Bean
public ConversionServiceFactoryBean conversionService ()
throws Exception {
final ConversionServiceFactoryBean csfb = new ConversionServiceFactoryBean ();
csfb.setConverters (getConverters ());
return csfb;
}
private Set<Converter> getConverters () {
return Sets.newHashSet (new BarConverter.ToString (), new BarConverter.FromString ());
}
}
BarConverter的代码如下所示。
public class BarConverter {
public static class FromString <S extends String, P extends Bar>
implements Converter<S, P> {
@Override
public P convert (final S source) {
// sets value into new instance of Bar and returns
}
}
public static class ToString <P extends Bar, S extends String>
implements Converter<P, S> {
@Override
public S convert (final P source) {
// gets value from Bar and returns
}
}
}
我收到以下异常。
org.springframework.data.mapping.model.MappingException: Unknown persistent entity test.domain.Bar
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:178)
...
Bar
确实不是一个持久的实体,我的理解也不应该是一个。我知道这可能与定义的listBars
返回类型有关;另一方面,Foo
s的存储库,所以我曾期望它能够工作。我非常不喜欢获取整个节点集,然后只过滤嵌套对象;我不希望Bar
替换为String
Foo
,因为它们的类型可能具有语义相关性。
关于如何返回现有节点的所有属性值,我有点迷失,特别是因为这个查询按照neo4j-shell的预期工作,所以我认为这是一个纯粹的Spring映射问题。
我可以根据要求添加任何可能有用的信息。
非常感谢任何帮助。