【问题标题】:Manually add NodeEntity, Id, GeneratedValue, RelationshipEntity etc (not using annotations)手动添加 NodeEntity、Id、GeneratedValue、RelationshipEntity 等(不使用注释)
【发布时间】:2020-02-26 10:49:48
【问题描述】:
我有两个 Maven 项目;
a) 一个 REST 服务器项目
b) 一个消耗 Rest 的客户端项目
我想创建一个包含域 POJO 类的第三个项目 - 并将其作为依赖项添加到另外两个项目中,因此我只有一个具有域类的项目。但是,REST Server 项目依赖于 org.neo4j.ogm,它使用注解来实现图的持久化(@NodeEntity、@Id、@GeneratedValue、@RelationshipEntity 等)。
显然,我不希望 POJO 项目依赖于任何东西,因为它也会被客户端使用。所以我的问题是;我可以以某种方式手动添加这些设置,而不是使用注释吗?
【问题讨论】:
标签:
java
spring-data-neo4j
neo4j-java-api
【解决方案1】:
Neo4j-OGM 仅适用于注释,不支持例如基于 XML 的声明。
这会有点笨拙和有限,但有一种情况可以工作:
- 如果您使用自动生成的 id 作为
Long id(没有@Id 和@GeneratedValue 注释),那么没有@NodeEntity 注释的实体将被识别。
- 没有
@RelationshipEntity 定义。
- 所有关系都是传出的,它们的名称应该从它们的字段名称派生而来。 (例如,
List<User> friends 会变成 (...)-[:FRIENDS]->(:User))
- 不使用其他 Neo4j-OGM 注释,如
@Property、@Convert 等。