我有
Link
节点连接到其他 Link
节点。 我正在使用最新版本的 spring-boot-starter-data-neo4j
和 Lombok
。
我的
Link
节点如下:
@Node
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Link {
@Id
private String linkId;
private String name;
@Relationship(type = "IS_LINKED_TO")
public List<Linkage> linkages;
}
和我的
Linkage
关系如下:
@RelationshipProperties
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Linkage {
@RelationshipId
private String id;
@TargetNode
private Link link;
private Integer length;
}
我的存储库如下:
public interface LinkRepository extends Neo4jRepository<Link, String> {
}
当我拨打
linkRepository.findAll()
时,我收到以下警告和错误:
The query used a deprecated function: `id`.
org.neo4j.driver.exceptions.value.Uncoercible: Cannot coerce LIST OF ANY? to Java String
请指教。
查询使用了已弃用的函数:
。id
该警告源自 Neo4j 本身的 Cypher 运行时,并且是 通过 Neo4j Java 驱动程序广播到 Spring Data Neo4j。在 此刻这没什么好担心的。 如果您希望 Spring Data Neo4j 停止直观地记录此情况,您可以使用专用记录器 (https://docs.spring.io/spring-data/neo4j/reference/appendix/logging.html)。在您的情况下,这将是需要设置为错误而不是“只是”警告的
org.springframework.data.neo4j.cypher.deprecation
记录器。
org.neo4j.driver.exceptions.value.Uncoercible:无法强制任何列表?到 Java 字符串
我认为您的 Neo4j 实例中的数据有问题。由于我在您的示例中看到的代表非 id 数据的唯一真实的
String
是 name
,我认为您的其中一个条目可能没有 String
,但可能有 String[]
集。