当我尝试为SpringData保存新节点时,它具有与现有节点相同的属性和关系,它只是更新存在并且不插入新节点。我用空ID保存它。Spring Data 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 collection,Long itemId)。基本上它调用保存方法GraphRepository。 谢谢! –