在Neo4j OGM tutorial中,我看到只有Set用于映射关系。可以使用地图吗?
考虑以下示例
假设我有一个如下课程:
@NodeEntity
public class Person {
@Property
String idCardNumber;
Map <String, Car> cars;
}
@NodeEntity
public class Car{
@Id
String plateNumber;
@Property
String color;
}
给定Person类和Car类中使用的地图,该如何从Person类和Car类中定义关系?
答案 0 :(得分:0)
这是不可能的,因为无法在数据库中存储其他信息(例如,示例中的String
)。
我认为,根本不需要Map
结构的关系,因为它们总是由其类型或通过@RelationshipEntity
的丰富关系实体定义的。
答案 1 :(得分:0)
如@meistermeier所述,这不可能直接实现。但是我使用了hack,因为我所需要的只是能够使用Neo4j OGM将对象直接保存在数据库中。简而言之,我在持久化类set
的实例之前使用Person
并将对象放入其中。代码如下:
@NodeEntity 公共类人{ @属性 字符串idCardNumber;
@Transient
Map <String, Car> cars;
@Relationship(type = "hasCar",direction = Relationship.OUTGOING)
Set <Car> finalCars;
public void beforeSave(){
finalCars = new HashSet<>(cars.values());
}
}
@NodeEntity
public class Car{
@Id
String plateNumber;
@Property
String color;
}
然后,在将Person
对象保存到数据库中之前,将汽车加载到集合finalCars
中。可以通过在实例中调用Person
直接在负责持久化beforeSave()
的方法中完成此操作。