我正在尝试从RDBMS导入一堆记录并创建连接的节点 在neo4j中使用Spring Data Neo4j因为想要定期执行此操作并将Neo4j数据库与主RDBMS中的数据库同步。
我目前的问题是我需要将id保留原样,以便能够链接不同节点类型的后续记录,但是如果我填充了id' s使用原始值,节点不会在Neo4j中创建。 我拥有的一个示例实体是:
@NodeEntity
data class CarAgent(
@Id
override var id: Long? = null,
var name: String = "",
var country: String = "",
var desc: String = "",
var status: Boolean = false,
var xmlType: String = "",
var company: String) : Entity
导入逻辑正在做:
@Suppress("UNCHECKED_CAST")
fun processRow(exchange: Exchange) {
val message = exchange.`in`.body as List<String>
val id = message[0]
val name = message[1]
val country = message[4]
val desc = message[19]
val status = message[20]
val xml = message[25]
val company = message[31]
val carAgent = CarAgent(
id = id.toLong(),
name = name,
country = country,
desc = desc,
status = status.toBoolean(),
xmlType = xml,
company = company)
carAgentDataRepository.save(carAgent)
}
如果我将注释@GeneratedValue添加到Id字段,它只保存实体。
答案 0 :(得分:1)
在实体中,OGM / SDN认为Long id
字段是特殊字段。它映射到数据库内部节点id。此行为继承自以前的OGM版本。
尝试将字段名称更改为legacyId
,并且它应该有效。