【问题标题】:Spring Boot - Null pointer on custom QuerySpring Boot - 自定义查询上的空指针
【发布时间】:2018-11-17 12:06:12
【问题描述】:

我正在做一个自定义查询来检查给定的数据是否存在于 mongodb 数据库中。以下是我完成的代码。

 package com.royangular.royAngularProject.repositories;


import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;

import com.royangular.royAngularProject.models.ContactUs;



@Repository
public interface ContactUsRepository extends MongoRepository<ContactUs, String> {

    @Query("{'name' : ?0}")//, contactEmail : ?0, phoneNumber : ?0}")
    public List<ContactUs> findBynameAndcontactEmailAndphoneNumber(String name);//, String contactEmail, String phoneNumber);

}

调用 repo 的类:

package com.royangular.royAngularProject.controllersContact;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.ResponseEntity;

import com.royangular.royAngularProject.models.ContactUs;
import com.royangular.royAngularProject.repositories.ContactUsRepository;

public class QueryDBCheck {

     @Autowired
     ContactUsRepository contactUsRepository;

     @Autowired
     MongoTemplate mongoTemplate ;

    public boolean queryDB (ContactUs contactus)
    {
        List<ContactUs> colleagues = new ArrayList<ContactUs>(); 

        if (contactUsRepository.findBynameAndcontactEmailAndphoneNumber(contactus.getName())==null)
        {
            return true;
        }
        else
        {
            colleagues = contactUsRepository.findBynameAndcontactEmailAndphoneNumber("dasdsad");//, contactus.getContactEmail(), contactus.getPhoneNumber());

        }


        if (colleagues.size()==0)
        {
            return true;
        }

        return false;

    }
}

我在contactUsRepository.findBynameAndcontactEmailAndphoneNumber(contactus.getName()) 获得了一个空指针。请问我知道问题出在哪里以及我需要如何解决它。它阻止代码继续。抱歉,我是 mongodb 的新手。您能否还包括为什么要这样做以及如何进行,以便社区中的每个人都可以学习。

【问题讨论】:

  • 您确定contacts.getName() 返回non-null 值吗?
  • @ETO 是的,我确定它不为空,我什至打印在之前声明不为空的日志上。

标签: java mongodb spring-boot


【解决方案1】:
  1. 从您的方法中删除Query 注释。在这种特殊情况下,您不需要它。
  2. 在命名 JPA 查询时尊重 camelCase 表示法。 (注意方法名中参数名的首字母大写)。

    @Repository
    public interface ContactUsRepository extends MongoRepository<ContactUs, String> {
    
        public List<ContactUs> findByNameAndContactEmailAndPhoneNumber(String name, String contactEmail, String phoneNumber);
    
    }
    

【讨论】:

    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多