我有一堂课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);
}
处理这些类型的删除的推荐方法是什么?