neo4j RelationshipEntity не создан - PullRequest
0 голосов
/ 15 ноября 2018

У меня проблемы с получением neo4j RelationshipEntity с помощью Spring Boot.Я использую spring-boot-starter-data-neo4j (2.1.0.RELEASE), а образ докера neo4j с тегом 3.4.9.

У меня есть простая NodeEntity, которая содержит коллекцию для RelationshipEntity:

@NodeEntity
public class Book {
    @Id
    @GeneratedValue
    private Long id;
    private String name;

    public Book() {}

    public Book(String name) {
        this.name = name;
    }

    @Relationship(type = "PURCHASED_WITH", direction = "OUTGOING")
    private Set<BookPurchase> purchases = new HashSet<>();

    // getters and setters follow
}

У меня есть другая NodeEntity, которая также содержит коллекцию для сущности отношения:

@NodeEntity
public class CreditCard {

    @Id
    @GeneratedValue
    private Long id;
    private String number;

    @DateString(value = "yyyy-MM-dd")
    private Date expiryDate;

    public CreditCard() {}

    public CreditCard(String number, Date expiryDate) {
        this.number = number;
        this.expiryDate = expiryDate;
    }

    @Relationship(type = "PURCHASED_WITH", direction = "INCOMING")
    private Set<BookPurchase> purchases = new HashSet<BookPurchase>(); 

    // getters and setters follow
}

У меня есть RelationshipEntity, который добавляет ссылки на оба класса NodeEntity в конструкторе:

@RelationshipEntity(type = "PURCHASED_WITH")
public class BookPurchase {
    @Id
    @GeneratedValue
    private long id;

    @DateString("yyyy-MM-dd")
    Date purchaseDate;

    @StartNode
    private Book book;

    @EndNode
    private CreditCard card;

    public BookPurchase(){}

    public BookPurchase(CreditCard card, Book book, Date purchaseDate) {
        this.card = card;
        this.book = book;
        this.purchaseDate = purchaseDate;

        this.card.getPurchases().add(this);
        this.book.getPurchases().add(this);
    }
    // getters and setters follow
}

И, наконец, у меня есть контроллер Spring, связывающий все вместе:

@RestController
public class ExamplesController {

    @Autowired
    CreditCardRepository creditCardRepository;

    @PostMapping(value="/purchases")
    public String createPurchases() {
        CreditCard card = new CreditCard("11111", new GregorianCalendar(2018, Calendar.FEBRUARY, 12).getTime());

        Book book1 = new Book("of mice and men");
        BookPurchase purchase1 = new BookPurchase(card,book1,new GregorianCalendar(2018, Calendar.MARCH, 15).getTime());

        creditCardRepository.save(card);
        return "Successfully created entities";
    }
}

Всякий раз, когда япопробуйте curl -X POST http://localhost:8080/purchases, я просто вижу следующее в браузере neo4j - RelationshipEntity не сохраняется, только узлы.

Может ли кто-нибудь помочь?

enter image description here

1 Ответ

0 голосов
/ 18 ноября 2018

Спасибо Gerrit Meier за ответ на этот вопрос.Мой RelationshipEntity использовал примитив long вместо объекта / оболочки Long.Полная информация здесь: https://community.neo4j.com/t/neo4j-relationshipentity-not-persisted/3039

...