0

Spring Data Neo4j 2.2.2 を使用していますが、同じ開始ノードと終了ノードで複数の関係を維持するのに問題があります。

個人が会社と複数の契約を持つことができると仮定します。私はこれを次のようにモデル化しました

@NodeEntity
public class Company {...}

@NodeEntity
public class Person {

    @RelatedToVia 
    private Set<Contract> contracts;
    ...
}

@RelationshipEntity
public class Contract {

    @StartNode
    private Person person;

    @EndNode
    private Company company;
    ...
}

人に契約を追加するには、次のようなコードを書いています

Contract contract = new Contract();
contract.setPerson(person);
contract.setCompany(company);
// set other contract properties
person.getContracts().add(contract);
personDao.save(person)

はどこpersonDaoですかGraphRepository<Person>

私のテストでは、その人物がまだ同じ会社の契約を持っていない場合、その人物に新しい契約を追加できます。しかし、既存の契約と同じ Company エンド ノードを持つ Person に新しい契約を追加しようとすると、保存されません。

equals()hashCode()は に対して実装されており、 を呼び出したときに@GraphIdすべてのオブジェクトがコントラクトにあることを確認しました。私も試してみましたが、無駄ではありませんでした。SetsaveCollectionSet

何が間違っている可能性がありますか?

4

1 に答える 1