我有一堂课House和一堂课Room。这些类中的每一个都是 aNodeEntity并且保存在单独的存储库中,HouseRepository并且RoomRepository. House包含一个Set<Room>. 我希望能够删除一个Room实例并自动从类Set<Room>内部删除该实例House。由于 Neo4j 是一个图形数据库,我认为我应该能够声明 theHouse和 each之间的关系,Room并且删除一个Room实例会自动处理这个问题。以下两个类代表House和Room。
@NodeEntity
public class House {
@GraphId
private Long id;
@Indexed(unique=true) String uid;
@RelatedTo (type="addition", direction=Direction.OUTGOING)
@Fetch
private Set<Room> rooms;
public House(String uid, Set<Room> rooms) {
this.uid = uid;
this.rooms = rooms;
}
public House() {
this.uid = //random uid;
}
}
@NodeEntity
public class Room {
@GraphId
private Long id;
@Indexed(unique=true) String uid;
public Room(String uid) {
this.uid = uid;
}
public Room() {
this.uid = //random uid;
}
}
我在想我应该能够编写一个 Cypher 查询来解决RoomRepository这个问题,但我不确定。我想过这样的事情:
public interface RoomRepository extends BaseRepository<Room>{
@Query("start room=node({0}) " +
"match house-[:addition*]->room" +
"delete room")
public void deleteRoomAndRemoveRoomFromHouse(String uid);
}
处理这些类型的删除的推荐方法是什么?