【问题标题】:spring data neo4j crud - many optional param?spring data neo4j crud - 许多可选参数?
【发布时间】:2015-03-20 12:10:47
【问题描述】:

我使用Spring-data-neo4j 和一个CrudRepository

@Repository
public interface PersonRepository extends GraphRepository<Person> {}

我有一个包含 3 个输入名字、姓名、年龄的 Html 表单,所以我可以选择多个条件:All, FirstName, FirstName + Name, FirstName + Age etc....

我想用 Map 或其他东西做一个“多条件查找”。有可能吗?

我在我的 CRUD 中尝试这个:

List<Person> findByFirstnameAndNameAndAge(String firstname, String name, int age);

但如果一个或所有参数为空,则不起作用。

【问题讨论】:

    标签: spring neo4j crud


    【解决方案1】:

    尝试使用地图和@Query 注解

    @Query("MATCH (u:Person) WHERE u.name = {param}.name OR u.age = {param}.age RETURN u")
    List<Person> findDynamic(@Param("param") Map params);
    

    【讨论】:

      【解决方案2】:

      嗨@Michael Hunger 感谢您的回复。这并不完全符合我的预期,但您为我提供了一些很好的搜索内容

      我终于做到了:

      import org.apache.commons.collections.map.HashedMap;
      import com.google.common.collect.Lists;
      
      (...)
      
      @Autowired
      private EventRepository eventRepository; //@Repository extends GraphRepository<Event>
      
      (...)
      
      public List<Event> findByDynamicParam(HashedMap params) {
          String query = "match (event)-[:user]-(user), (event)-[:action]-(action)";
          if (!params.isEmpty()) {
              query += " where";
          }
          if (params.containsKey("actionId")) {
              query += " id(action) = {actionId} and";
          }
          if (params.containsKey("userId")) {
              query += " id(user) = {userId} and";
          }
          if (!params.isEmpty()) {
              query = query.substring(0, query.length() - 4);
          }
          query += " return (event)";
          return Lists.newArrayList(eventRepository.query(query, params));
      }
      

      客户的来电者:

      HashedMap params = new HashedMap();
      if (actionId != null) {
          params.put("actionId", actionId);
      }
      if (userId != null) {
          params.put("actionId", userId);
      }
      List<Event> events = eventService.findByDynamicParam(params);
      

      你怎么看?是否可以优化这个功能?

      问候

      来自巴黎的奥利维尔

      【讨论】:

        猜你喜欢
        • 2020-02-03
        • 2014-09-10
        • 1970-01-01
        • 1970-01-01
        • 2014-01-01
        • 1970-01-01
        • 2012-07-21
        • 2015-04-18
        • 2017-04-25
        相关资源
        最近更新 更多