SpringDataの新しいノードを既存のノードと同じプロパティおよび関係で保存しようとすると、新しいノードを挿入しません。私はヌルIDでそれを保存しています。SpringデータNeo4jは新しいノードを挿入せず、同じプロパティを持つ既存のノードのみを更新します。
問題が何ですか?
のNeo4j 3.0.0
春データ4.1.2
のNeo4j OGM 2.0.2
public abstract class ModelObject {
@GraphId
protected Long id;
//getters and setters
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || id == null || getClass() != o.getClass())
return false;
ModelObject entity = (ModelObject) o;
if (!id.equals(entity.id))
return false;
return true;
}
@Override
public int hashCode() {
return (id == null) ? -1 : id.hashCode();
}
}
@RelationshipEntity(type = "COLLECTION")
public class Collection extends ModelObject{
@DateString("yyyy-MM-dd")
private Date acquisitionDate;
@StartNode
private User collector;
@EndNode
private Item item;
private Boolean manual;
private Boolean box;
private Double paidValue;
private String historyAcquisition;
//getters and setters
}
@Service
public class CollectionServiceImpl implements ICollectionService {
@Autowired
private UserRepo userRepo;
@Autowired
private CollectionRepo collectionRepo;
@Autowired
private ItemRepo itemRepo;
@Override
public Iterable<Collection> findByUserId(Integer idUser) {
return collectionRepo.findByCollectorId(idUser);
}
@Override
public boolean addItemCollection(Collection collection, Long itemId) {
try {
Long userId = collection.getCollector().getId();
collection.setCollector(userRepo.findOne(userId, 1));
collection.setItem(itemRepo.findOne(itemId, 1));
collection.setId(null);
collectionRepo.save(collection);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
@Override
public boolean removeItemCollection(Long collectionId, Long itemId) {
try {
collectionRepo.delete(collectionId);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}
@NodeEntity(label="USER")
パブリッククラスユーザーがModelObject {
private String fullName;
private String userName;
private String password;
private Country country;
@DateString(DateUtil.yyyy_MM_dd)
private Date birthDate;
@Relationship(type="FOLLOWING", direction=Relationship.OUTGOING)
private Set<Following> following;
@Relationship(type="COLLECTION", direction=Relationship.OUTGOING)
private List<Collection> collection ;
}
いくつかのコードを見ずに言うのは難しい – Luanne
私は投稿を編集しました。コードの書式設定は残念です。 基本的には、この保存がaddItemCollection(Collectionコレクション、Long itemId)であるメソッドです。基本的には、SaveメソッドGraphRepositoryを呼び出します。 ありがとうございます! –