我這是由以下的Cypher表達式描述的圖:我描述了一個Java類匹配Brand
「s的數據結構如何將實體映射到現有圖形?
CREATE
(BMW:Brand {name: "BMW", country: "Germany"}),
(X3:Model {name: "X3", acceleration: 7.1, maxSpeed: 227.5, displacement: 1997, consumption: 6}),
(lastGen:Generation {from: 2013}),
(xDrive20i:Modification {name: "xDrive20i", maxSpeed: 210, acceleration: 8.3, consumption: 7.9}),
(X3)-[:MODEL_OF]->(BMW),
(BMW)-[:MODEL]->(X3),
(lastGen)-[:GENERATION_OF]->(X3),
(X3)-[:GENERATION]->(lastGen),
(xDrive20i)-[:MODIFICATION_OF]->(X3),
(X3)-[:MODIFICATION]->(xDrive20i),
(lastGen)-[:MODIFICATION]->(xDrive20i),
(xDrive20i)-[:MODIFICATION_OF]->(lastGen);
:
@NodeEntity
@TypeAlias("Brand")
public class Brand {
@GraphId
private Long id;
@Indexed(indexType = IndexType.FULLTEXT, indexName = "brand_name")
private String name;
private String origin;
private String owner;
@RelatedTo(type = "MODEL", direction = Direction.OUTGOING)
private Set<Model> models;
//getters and setters are ommited
}
和存儲庫:
public interface BrandRepository extends GraphRepository<Brand>{
//method's signatures are ommited
}
當我撥打brandRepository.count()
時,它會返回1,如我所料。但是,如果我叫brandRepository.getOne(2249L)
我得到一個異常:
java.lang.IllegalStateException: No primary SDN label exists .. (i.e one with starting with __TYPE__)
據我所知讀LabelBasedNodeTypeRepresentationStrategy
源,節點必須有至少一個標籤與__TYPE__
前綴。
我如何將實體映射到圖上,因爲我可能不會更改圖結構?
如果沒有其他方法,我不介意執行我自己的自定義LabelBasedNodeTypeRepresentationStrategy
。但在這種情況下,有人可以讓我知道爲什麼它以這種方式實現(我認爲這不是偶然),我應該如何將自定義解決方案綁定到spring-data-neo4j
使用它?
我使用neo4j-2.0.0-M06和spring-data-neo4j-3.0.0.M1。
我沒有找到我的問題的答案,但我以另一種方式接近我的問題。我更改爲Ruby技術並使用[neo4j](https://github.com/andreasronge/neo4j)gem。它的行爲完全如我所料,至少不會將元數據添加到我的數據中。 –