一个@NodeEntity 的 SDN 4.0 多标签
SDN 4.0 multi labels for one @NodeEntity
我现有的@NodeEntity
如下
@NodeEntity
public class Company {
@GraphId
private Long id;
private String name;
private String blah;
和@Repository
@Repository
public interface CompanyRepository extends GraphRepository<Company> {
Company findByName(String name);
要在 neo4j 中创建一个新的 Company
,只需执行
Company company = new Company();
company.setName("Company Name");
repository.save(company);
这将在 neo4j 中创建一个 Company
节点,标签为 Company
。
但是,我也希望能够使用不同的标签创建它。除了创建一个新的 @NodeEntity
和一个新的 @Repository
,我可以使用现有的域和带有单独标签的 repo 来做到这一点吗?
我有 google 这个,大多数答案只适用于 SDN 3.*。其中一些人建议用 @Labels
注释一个集合字段,但看起来这个 @Labels
已从 SDN4.0
中删除
这是Neo4j-OGM的责任。
对于节点的多个标签,您应该在 Java 中使用继承。
@NodeEntity
public abstract class DomainEntity { ... }
public class Company extends DomainObject { ... }
public class PublicCompany extends Company { ... }
正如@MicTech 所指出的,目前实现这一目标的唯一方法是通过您的对象模型。
但是如果你想将多个标签附加到一个现有的节点实体和存储库,在当前版本中是不可能的。
您可能有一个服务器扩展来分配额外的标签,但这些标签实际上不会被您的存储库使用。
遗憾的是,由于产品路线图仍在讨论中,我们现在还没有确定的实施日期。
我现有的@NodeEntity
如下
@NodeEntity
public class Company {
@GraphId
private Long id;
private String name;
private String blah;
和@Repository
@Repository
public interface CompanyRepository extends GraphRepository<Company> {
Company findByName(String name);
要在 neo4j 中创建一个新的 Company
,只需执行
Company company = new Company();
company.setName("Company Name");
repository.save(company);
这将在 neo4j 中创建一个 Company
节点,标签为 Company
。
但是,我也希望能够使用不同的标签创建它。除了创建一个新的 @NodeEntity
和一个新的 @Repository
,我可以使用现有的域和带有单独标签的 repo 来做到这一点吗?
我有 google 这个,大多数答案只适用于 SDN 3.*。其中一些人建议用 @Labels
注释一个集合字段,但看起来这个 @Labels
已从 SDN4.0
这是Neo4j-OGM的责任。
对于节点的多个标签,您应该在 Java 中使用继承。
@NodeEntity
public abstract class DomainEntity { ... }
public class Company extends DomainObject { ... }
public class PublicCompany extends Company { ... }
正如@MicTech 所指出的,目前实现这一目标的唯一方法是通过您的对象模型。
但是如果你想将多个标签附加到一个现有的节点实体和存储库,在当前版本中是不可能的。 您可能有一个服务器扩展来分配额外的标签,但这些标签实际上不会被您的存储库使用。
遗憾的是,由于产品路线图仍在讨论中,我们现在还没有确定的实施日期。