neo4j - SDN参数化RelationshipEntity类型
问题描述
为了创建RelationshipEntity
,我必须使用以下构造:
@RelationshipEntity(type = "PLAYED_IN")
public class Role {
@Id @GeneratedValue private Long relationshipId;
@Property private String title;
@StartNode private Actor actor;
@EndNode private Movie movie;
}
我有一个问题 - 是否可以参数化RelationshipEntity
类型?现在在上面的示例中,我们有硬编码PLAYED_IN
类型,但我需要使用许多其他类型,例如DIRECTOR_IN
,WRITER_IN
等等。如何在不RelationshipEntity
为此目的引入单独的类的情况下通过 SDN 实现它?
一种可能的解决方案是将作业类型定义为 RelationshipEntity 属性,但我不确定这是一个好主意,因为我有大约 3000 万个实体并且 AFAIK Neo4j 不支持RelationshipEntity
属性索引...请告知。
解决方案
依靠具有共同基础的抽象类并从中继承每个必要的角色怎么样?
abstract class BaseRelationship {
@Id
@GeneratedValue
private Long relationshipId;
@Property
private String title;
[...]
}
和
@RelationshipEntity(type = "PLAYED_IN")
public class Role extends BaseRelationship {
[...]
}
推荐阅读
- sql - 如何在无需重建表的情况下向事实表添加新维度?
- c# - 如何从元组数组中获取最大第二个元素的元组?(C#)
- sql-server - SSMS - 执行计划操作员 - Est/Act 行显示
- flutter - 在Flutter中单击按钮时将数据从API绑定到gridview?
- mysql - MySQL 8.0.23 tmp 表不断填满
- python - Django如何更改收到错误的字段的值
- android - 应用 BottomSheetDialogFragment 背景后无法更改按钮背景
- java - 从 MultipartFile 创建 apache poi 工作簿时,Spring Boot Controller 功能未终止或返回
- kotlin - Kotlin coroutines - async withTimeout 一旦线程超时就停止阻塞
- javascript - vuexfire 不适用于 Firebase 模拟器