【问题标题】:Spring data neo4j : count relation By EndNode IDSpring数据neo4j:按EndNode ID计数关系
【发布时间】: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`]-&gt;(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


【解决方案1】:

目前(SDN 5.0.1)不可能依靠给定的对象,例如countByMeeting(Meeting meeting) 或让 SDN 将 id 作为特殊属性处理。 请随时在https://jira.spring.io/browse/DATAGRAPH/ 提出问题

目前我们可以提供的唯一解决方案是在不提供查询的情况下按相关对象属性进行计数,例如 countByMeetingName(String meetingName)

编辑:已创建问题https://jira.spring.io/browse/DATAGRAPH-1049

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多