У меня есть два класса первой является Компания:Как сохранить отношения в объекте отношения?
@GraphId
private Long graphId;
private String id;
private String name;
Второй класс продукта:
@GraphId
private Long graphId;
private String id;
private String name;
Между этими двумя класса отношения компания имеет лицензию на и я хочу, чтобы создать отношения субъекта, так что я могу сохраните свойство в отношении. Так я создать эту связь лица класс под названием CompanyHasLicenseFor:
@RelationshipEntity(type="company_has_license_for")
public class CompanyHasLicenseFor {
@GraphId
private Long graphId;
private String id;
@StartNode
private Company company;
@EndNode
private Product product;
private Date startDate;
private Date endDate;
}
Это код, я использую для создания отношения:
Company company = new Company("Company Test");
companyService.save(company);
Product product = new Product("Product Test");
productService.save(product);
CompanyHasLicenseFor com = new CompanyHasLicenseFor(company, product, new Date(), new Date());
companyHasLicenseForService.save(com);
Когда я пытаюсь создать фиктивные данные, используя код выше отношения между двумя узлами не создано. Создаются только узловая компания и продукт. Как создать/сохранить объект отношения в этом случае?
Спасибо
Update # 1:
я уже пытался добавить CompanyHasLicenseFor как свойство отношения в своем классе компании: @GraphId частный Long graphId;
private String id;
private String name;
@Relationship(type="company_has_license_for")
private CompanyHasLicenseFor companylicense;
Однако отношения до сих пор не создано
Update # 2:
@NodeEntity
public class Company {
@GraphId
Long graphId;
String id;
String name;
@Relationship(type="company_has_license_for", direction = "UNDIRECTED")
Set<CompanyHasLicenseFor> companylicenses;
.....
}
@NodeEntity
public class Product {
@GraphId
Long graphId;
String id;
String name;
@Relationship(type = "company_has_license_for", direction = "UNDIRECTED")
Set<CompanyHasLicenseFor> companylicenses;
....
}
@RelationshipEntity(type="company_has_license_for")
public class CompanyHasLicenseFor {
@GraphId
Long graphId;
String id;
@StartNode
Company company;
@EndNode
Product product;
....
}
Я использую Spring Data Neo4j 4.2.0.RELEASE и Neo4j-ОГМ-2.1.1
Это мой Sample Code при необходимости
Являются ли 'companyService',' productService' и 'companyHasLicenseForService' все хранилища данных Spring Data? Если так, то все должно работать. Вероятно, вам понадобится '@ Transactional', окружающая ваши три метода сохранения, если вы хотите, чтобы это действие было атомарным. – digx1
@ digx1 Да, все службы вызовут функцию репозитория. Я уже добавил аннотацию Transactional над объявлением открытого класса. Но отношения все еще не созданы в neo4j –