如何在映射实体中拥有非生成的 ID
How to have non generated Id's in mapped entities
我正在尝试从 RDBMS 导入一堆记录并创建连接的节点
在 neo4j 中使用 Spring Data Neo4j 因为我想定期执行此操作并通过此操作将 Neo4j 数据库与主 RDBMS 中的数据库同步。
我目前的问题是我需要将 id 保持原样,以便我能够 link 不同节点类型的后续记录,但是如果我用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 字段,它只会保存实体。
在实体中,Long id
字段被 OGM/SDN 视为特殊字段。它映射到数据库内部节点 ID。此行为继承自以前的 OGM 版本。
尝试将字段名称更改为类似 legacyId
的名称,它应该可以工作。
我正在尝试从 RDBMS 导入一堆记录并创建连接的节点 在 neo4j 中使用 Spring Data Neo4j 因为我想定期执行此操作并通过此操作将 Neo4j 数据库与主 RDBMS 中的数据库同步。
我目前的问题是我需要将 id 保持原样,以便我能够 link 不同节点类型的后续记录,但是如果我用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 字段,它只会保存实体。
在实体中,Long id
字段被 OGM/SDN 视为特殊字段。它映射到数据库内部节点 ID。此行为继承自以前的 OGM 版本。
尝试将字段名称更改为类似 legacyId
的名称,它应该可以工作。