【问题标题】:SDN 4.0 multi labels for one @NodeEntity一个 @NodeEntity 的 SDN 4.0 多标签
【发布时间】:2015-10-13 18:29:53
【问题描述】:

我现有的@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 吗?

我有谷歌这个,大多数答案只适用于 SDN 3.*。其中一些建议使用@Labels 注释集合字段,但看起来这个@Labels 已从SDN4.0 中删除

【问题讨论】:

    标签: neo4j spring-data-neo4j spring-data-neo4j-4


    【解决方案1】:

    正如@MicTech 指出的那样,目前实现这一目标的唯一方法是通过您的对象模型。

    但是,如果您想将多个标签附加到现有节点实体和存储库,则在当前版本中是不可能的。 您可能有一个服务器扩展来分配额外的标签,但这些标签并不能真正被您的存储库使用。

    很遗憾,我们目前还没有确定的实施日期,因为产品路线图仍在讨论中。

    【讨论】:

      【解决方案2】:

      这是Neo4j-OGM的责任。

      对于节点的多个标签,您应该在 Java 中使用继承。

      @NodeEntity
      public abstract class DomainEntity { ... }
      
      public class Company extends DomainObject { ... }
      
      public class PublicCompany extends Company { ... }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-13
        相关资源
        最近更新 更多