【发布时间】:2017-11-06 07:55:22
【问题描述】:
我正在使用 spring data neo4j 5.0.0。
我的模型是(user)-[:ATTEND]-(meeting),ATTEND 是一个关系实体。
用户有出席关系,会议没有关系。
@Relationship(type = "ATTEND")
Set<AttendMeeting> attendMeetings = new HashSet<>();
关系实体代码。
@Setter @Getter @ToString
@NoArgsConstructor
@RelationshipEntity(type = "ATTEND")
public class AttendMeeting {
@GraphId private Long id;
@JsonIgnore
@StartNode private User user;
@EndNode private Meeting meeting;
}
所以我只想按 meetingId 参加计数。
没有Query可以吗?
当我在repository.countByMeetingId 方法上运行时
自动创建查询是
MATCH (m:`Meeting`) WHERE m.`id` = { `meeting_id_0` } MATCH (n)-[r0:`ATTEND`]->(m) RETURN COUNT(r0)
我期待id(m),但生成的查询是m.`id'。
我可以制作 countByRelationShipEntityId 吗?
我怎样才能自动生成这样的代码。MATCH ()-[r:ATTEND]-(m:Meeting) WHERE ID(m) = {0} RETURN COUNT (r)
感谢您的回答,对不起我的英语不好。
【问题讨论】:
-
目前无法在没有自定义查询的情况下实现此目的,因为映射假定它是一个与其他属性一样的属性。您必须使用
id的用例是什么?也许您的问题还有其他解决方案。 -
查询是一种简单的方法,但您知道字符串不利于管理。我只是通过会议 ID 来计算关系。如何在没有查询的情况下找到关系计数
-
id从哪里来?也许您可以使用初始查询查询计数并将其用作 QueryResult (docs.spring.io/spring-data/neo4j/docs/current/reference/html/…) 的参数。
-
我更新了我的问题。换模会不会有参加关系比较好?或建立两个关系,如attend_to、attend_by。
标签: java neo4j spring-data-neo4j