提问人:LeadingMoominExpert 提问时间:8/10/2023 最后编辑:MattLeadingMoominExpert 更新时间:11/15/2023 访问量:143
Spring data neo4j 密码方言并非在任何地方都强制执行
Spring data neo4j cypher dialect is not enforced everywhere
问:
升级到 Neo4j v5.9.0 时,我尝试通过创建以下配置来强制执行 Neo4j v5 方言,如文档所示
import org.neo4j.cypherdsl.core.renderer.Dialect
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.neo4j.cypherdsl.core.renderer.Configuration as CypherConfiguration
@Configuration
class Neo4jConfiguration {
@Bean
fun cypherDslConfiguration(): CypherConfiguration =
CypherConfiguration.newConfig().withDialect(Dialect.NEO4J_5).build()
}
从弹簧执行器检查时,似乎存在以下 bean
"cypherDslConfiguration": {
"aliases": [],
"scope": "singleton",
"type": "org.neo4j.cypherdsl.core.renderer.Configuration",
"resource": "class path resource [com/foo/infra/neo4j/Neo4jConfiguration.class]",
"dependencies": [
"neo4jConfiguration"
]
}
使用存储库查询时,我仍然从各种不同的查询中收到以下警告
Neo.ClientNotification.Statement.FeatureDeprecationWarning: This feature is deprecated and will be removed in future versions.
UNWIND $__relationships__ AS relationship WITH relationship MATCH (startNode:`MyNode`) WHERE startNode.entityId = relationship.fromId MATCH (endNode) WHERE id(endNode) = relationship.toId MERGE (startNode)-[relProps:`BELONGS`]->(endNode) RETURN elementId(relProps) AS __elementId__
^
The query used a deprecated function: `id`.
节点上的字段使用注释进行注释。entityId
@Id
是否仍然缺少某些配置,或者我的 cypherDslConfiguration bean 不正确?
相关版本:
- org.springframework.boot:spring-boot-starter-data-neo4j 3.1.2
- org.springframework.data:spring-data-neo4j 7.1.2
- Kotlin 1.9.0 版本
答:
0赞
Anish B.
11/15/2023
#1
请阅读此 Spring Data Neo4j 7.1 发行说明。
从发行说明中:
Neo4j 5 引入了新的、更通用的内部标识符, 跨多个共享的 Neo4j 数据库安全工作。他们被称为 元素 id,可以使用 Cypher 函数进行检索。在此过程中,Cypher 函数得到了 荒废的。后者返回一个标识节点的长值,并且 关系。
elementId(n)
id(n)
我从他们的文档中了解到的内容以点的形式给出如下:
id()
Neo4j 中的函数用于返回长整型值。由于该函数已被弃用,因此将不再支持返回类型为长类型字段的数据模型。
id()
id
正确的数据模型应包含表示 id 的字段。@Id
@GeneratedValue
例如:
@Node("model")
public class Model {
@Id
@GeneratedValue
private String entityId;
.......
}
请阅读上面的文档以获取更多信息。
评论
0赞
LeadingMoominExpert
11/16/2023
这有点令人困惑,因为文档指出 So @GeneratedValue 注释没有被描述为强制性的。docs.spring.io/spring-data/neo4j/docs/current/reference/html/......Each entity has to have an id. If you don’t have such a unique key, you can use the combination of @Id and @GeneratedValue to configure SDN to use Neo4j’s internal id.
评论
@GeneratedValue
@Id
Long
id
@GeneratedValue