mongoTemplate.count не работает с классом сущностей, но работает с именем коллекции

Я пытаюсь использовать приложение sprigboot/springdata/mongodb.

У меня ниже 2 хранилище

import org.springframework.data.repository.CrudRepository; import com.mavericksolutions.ifs.entity.SOAIFSStatus; public interface IFSRepository extends CrudRepository<SOAIFSStatus, String>{}

2-й класс репозитория

import com.mavericksolutions.ifs.entity.SOAIFSStatus;

@Repository
public class IFSSearchRepository  {
    @Autowired
    MongoTemplate IFSMongoTemplate;     

Теперь я использую один метод для извлечения всех записей на основе входной строки

public List <SOAIFSStatus> listAllByAnalyst(String analyst)
    {

        List<SOAIFSStatus> ifsresult = null;

        try
        {
        Criteria c = new Criteria();
        c = c.and("Analyst").is(analyst); 

        if (IFSMongoTemplate== null )
            throw new IllegalStateException (***MONGO TEMPLATE IS NULL***");
        else
                System.out.println("************TEMPLATE IS NOT NULL****");

        if (IFSMongoTemplate.collectionExists(SOAIFSStatus.class))
        {
            System.out.println("*******COLLECTION EXISTS 1 ******");
            System.out.println("QUERY RECORD COUNT =========="+ IFSMongoTemplate.count(new Query(c), "crm_ifs_status_171"));

            //WORKS TILL HERE.................................

            System.out.println("QUERY RECORD COUNT WITH ENTITY CLASS =========="+ IFSMongoTemplate.count(new Query(c), SOAIFSStatus.class,"crm_ifs_status_171"));
            //Does not print count when used with Entity class
        }
        ifsresult = IFSMongoTemplate.find(new Query(c), SOAIFSStatus.class, "crm_ifs_status_171");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return ifsresult;   
    }

Таким образом, mongoTemplate.count не работает с классом сущностей, но работает с именем коллекции.

Также

ifsresult = IFSMongoTemplate.find(новый запрос (c), SOAIFSStatus.class, "crm_ifs_status_171");

дает ниже исключение.

org.springframework.data.mapping.context.InvalidPersistentPropertyPath: Аналитик свойств не найден в com.mavericksolutions.ifs.entity.SOAIFSStatus! в org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:257) в org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertaxt.conf, ".createPropertyField(QueryMapper.java:231) по адресу org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:129) по адресу org.springframework.data.mongodb.ToreTount:752) на com.mavericksolutions.ifs.repository.IFSSearchRepository.listAllByAnalyst(IFSSearchRepository.java:113) по адресу com.mavericksolutions.ifs.repository.IFSSearchRepository$$FastClassBySpringCGLIB$$404c859f.invoke.co.proke.xyx.proxy.proxy.proxy.proxy.proxy.proxy.pro..java:204) по адресу org.springframework.aop.framework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.jop Java:656) на com.mavericksolutions.ifs.repository.IFSSearchRepository$$EnhancerBySpringCGLIB$$2d071eaf.listAllByAnalyst() на com.mavericksolutions.ifs.controller.IFSController.ifssearch(IFSController.java:57)

Ниже мой класс контроллера

@Controller
public class IFSController {

    @Autowired
    IFSRepository ifsrepo;

    @Autowired
    IFSSearchRepository ifsSearchRepo;

    MongoTemplate IFSMongoTemplate;

    @RequestMapping("/ifshome")
    public String home (Model ifshome)
    {

        ifshome.addAttribute("ifslist", ifsrepo.findAll());
        return "ifshome";
    }

    @RequestMapping(value="/ifsbyRelease",method = RequestMethod.POST)
    public String ifssearch(Model model,@RequestParam String search) 
    {       
        try
        {               
        model.addAttribute("ifslist", ifsSearchRepo.listAllByAnalyst(search));
        model.addAttribute("search",search);
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return "ifshome";
    }

Класс сущности:

@Entity
@Document(collection="crm_ifs_status_171")

public class SOAIFSStatus {

        private String Id;

        private String SRNumber;

        private String SRTitle;

        private Double Release;

        private String Analyst;

        private String IFSProvider;

        private String IFSConsumer;

        private String Changes;

        public SOAIFSStatus() {
        }
       //getter and setter methods

Ценю ваш ответ относительно того, где я иду не так.

Заранее спасибо.

1 ответ

Короче говоря, поле свойства analyst нет, где можно найти, если вы посмотрите на ошибку.

private String Analyst; должно быть private String analyst; и исправить это для остальных полей.

Следуйте стандартам именования, и все будет работать нормально.

http://www.oracle.com/technetwork/java/codeconventions-135099.html

Другие вопросы по тегам