如何按日期从多个文档中过滤数据Firestore,Android,Java

时间:2019-10-03 10:39:12

标签: java android google-cloud-firestore

有人可以帮我进行查询吗?我已经将一些测试数据放入Firestore来测试我的应用程序。我想查询当前登录用户的数据,然后只获取今天保存到数据库中的数据。我想获取当天的最高和最低温度,并且也希望获得相同的脉冲温度。目前,我的代码获得了所有这些信息,但是当我尝试将当前日期与数据库中的日期进行比较时,我只能检索今天的数据,而只能得到最新的数据。因此,举例来说,如果我每天必须处理文件,那么我只会得到最新的文件。 目前,我的代码如下:

package com.example.wht;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.cardview.widget.CardView;

import android.content.Intent;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.example.wht.model.WhtItem;
import com.example.wht.ui.WhtRecyclerAdapter;
import com.example.wht.util.WhtApi;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;


public class MainPageActivity extends AppCompatActivity implements View.OnClickListener {
    private TextView highestPulse, lowestPulse;
    private TextView highestTemp, lowestTemp;
    private TextView time;
    private ImageButton tempButton;
    private CardView pulseCardView, tempCardView;
    private Toolbar toolbar;
    private List<Integer> tempItemList;
    private List<Integer> pulseItemList;
    private List<WhtItem> itemList;
    private String htemp;
    private int minTemp ;
    private String ltemp;
    private int maxPulse;
    private String hpulse;
    private int minPulse;
    private String lpulse;
    private int maxTemp;
    private String dateAdded;

    private FirebaseAuth firebaseAuth;
    private FirebaseAuth.AuthStateListener authStateListener;
    private FirebaseUser user;
    private FirebaseFirestore db = FirebaseFirestore.getInstance();

    //Firestore conneection
    private CollectionReference collectionReference = db.collection("whtitem");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_page);

        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        firebaseAuth = FirebaseAuth.getInstance();
        user = firebaseAuth.getCurrentUser();

        highestPulse = findViewById(R.id.highest_pulse_mainpage);
        lowestPulse = findViewById(R.id.lowest_pulse_mainpage);
        highestTemp = findViewById(R.id.highest_temperature_text);
        lowestTemp = findViewById(R.id.lowest_temp_text);
        time = findViewById(R.id.time_mainpage); //TARKISTA
        tempButton = findViewById(R.id.imageButton);
        pulseCardView = findViewById(R.id.pulse_cardView);
        tempCardView = findViewById(R.id.body_heat_cardview);
        tempItemList = new ArrayList<>();
        pulseItemList = new ArrayList<>();
        itemList = new ArrayList<>();

        tempButton.setOnClickListener(this);
        pulseCardView.setOnClickListener(this);
        tempCardView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.imageButton:
                //TODO go to temp_history_activity
                break;
            case R.id.pulse_cardView:
                //TODO go to pulse_history_activity
                break;
            case R.id.body_heat_cardview:
                startActivity(new Intent(MainPageActivity.this, TimeTempActivity.class));
                break;
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.profile:
                //add take users to add journal
                if (user != null && firebaseAuth!=null){
                  startActivity(new Intent(MainPageActivity.this, ProfileActivity.class));
                    //finish();
                }
                break;
            case R.id.temp_history:
               /*if (user != null && firebaseAuth!=null) {
                    startActivity(new Intent(MainPageActivity.this, TempHistoryActivity.class));
                    //finish();
                }
                break;*/
            case R.id.pulse_history:
               /*if (user != null && firebaseAuth!=null) {
                    startActivity(new Intent(MainPageActivity.this, PulseHistoryActivity.class));
                    //finish();
                }
                break;*/
            case R.id.time_in_temp_history:
               if (user != null && firebaseAuth!=null) {
                    startActivity(new Intent(MainPageActivity.this, TimeTempActivity.class));
                    //finish();
                }
                break;
            case R.id.action_signout:
                //signout
                if (user != null && firebaseAuth!=null){
                    firebaseAuth.signOut();
                    startActivity(new Intent(MainPageActivity.this, MainActivity.class));
                    //finish();
                }
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onStart() {
        super.onStart();
        final Timestamp ts = new Timestamp(System.currentTimeMillis());
        final Date cDate = new Date(ts.getTime());
        final String currentDate =  DateFormat.format("dd/MM/yyyy", cDate).toString();

        collectionReference.whereEqualTo("userId", WhtApi.getInstance()
                .getUserId())
                .whereEqualTo("date", cDate)
                .get()
                .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                    @Override
                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                        if (!queryDocumentSnapshots.isEmpty()){

                            for (QueryDocumentSnapshot whtitems : queryDocumentSnapshots) {
                                WhtItem whtItem = whtitems.toObject(WhtItem.class);
                                itemList.add(whtItem);

                                Date dAdded = whtItem.getDate();
                                dateAdded = DateFormat.format("dd/MM/yyyy", dAdded).toString();

                                tempItemList.add(whtItem.getTemperature());
                                pulseItemList.add(whtItem.getPulse());

                                maxTemp = Collections.max(tempItemList);
                                htemp = "Korkein: " + maxTemp + " astetta";
                                minTemp = Collections.min(tempItemList);
                                ltemp = "Matalin: " + minTemp + " astetta";
                                maxPulse = Collections.max(pulseItemList);
                                hpulse = "Korkein: " + maxPulse + " bpm";
                                minPulse = Collections.min(pulseItemList);
                                lpulse = "Matalin: " + minPulse + " bpm";
                            }
                            if (currentDate.equals(dateAdded)) {
                                highestTemp.setText(htemp);
                                lowestTemp.setText(ltemp);
                                highestPulse.setText(hpulse);
                                lowestPulse.setText(lpulse);
                            }else {
                                Toast.makeText(MainPageActivity.this, "Ei dataa tältä päivältä", Toast.LENGTH_SHORT).show();
                            }
                        }else {
                            Toast.makeText(MainPageActivity.this, "Virhe dataa haettaessa", Toast.LENGTH_SHORT).show();
                        }
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(MainPageActivity.this, "Ei dataa näytettäväksi", Toast.LENGTH_SHORT).show();

                    }
                });

    }
}

这是我的POJO:

package com.example.wht.model;


import com.google.firebase.firestore.ServerTimestamp;

import java.util.Date;


public class WhtItem {
    private String nameUser, userId;
    private String password;
    private int temperature, pulse;
    private @ServerTimestamp java.util.Date date;
    private int duration;

    public WhtItem() {
    }

    public WhtItem(String nameUser, String userId, String password, int temperature, int pulse, java.util.Date date, int duration) {
        this.nameUser = nameUser;
        this.userId = userId;
        this.password = password;
        this.temperature = temperature;
        this.pulse = pulse;
        this.date = date;
        this.duration = duration;
    }

    public String getNameUser() {
        return nameUser;
    }

    public void setNameUser(String nameUser) {
        this.nameUser = nameUser;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getTemperature() {
        return temperature;
    }

    public void setTemperature(int temperature) {
        this.temperature = temperature;
    }

    public int getPulse() {
        return pulse;
    }

    public void setPulse(int pulse) {
        this.pulse = pulse;
    }

    public java.util.Date getDate() {
        return date;
    }

    public void setDate(Date dateAdded) {
        this.date = dateAdded;
    }

    public int getDuration() {
        return duration;
    }

    public void setDuration(int duration) {
        this.duration = duration;
    }
}

我的Firestore文档采用以下格式: Firestore database

有人可以告诉我我要怎么做吗?我试图用Google搜索,但是没有运气。

1 个答案:

答案 0 :(得分:1)

查询 FirebaseStore 的过滤器文档数据:

javax.servlet.ServletException: spring
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:553) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) ~[jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) ~[jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) ~[jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) ~[jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.server.Server.doStart(Server.java:282) ~[jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) ~[jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031]
    at com.betterknow.connector.core.AbstractRunner.startNewServer(AbstractRunner.java:298) [connector-core-0.3.12.jar:na]
    at com.betterknow.connectonce.runner.ConnectOnceRunner.runOverride(ConnectOnceRunner.java:77) [connectonce-connector-core-0.7.17.jar:na]
    at com.betterknow.connector.core.AbstractRunner.run(AbstractRunner.java:179) [connector-core-0.3.12.jar:na]
    at com.betterknow.connectonce.runner.ConnectOnceMain.main(ConnectOnceMain.java:16) [connectonce-connector-core-0.7.17.jar:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entitiesCache': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntitiesCache.entityCacheLoader; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityCacheLoader': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at javax.servlet.GenericServlet.init(GenericServlet.java:244) ~[javax.servlet-3.0.0.v201112011016.jar:na]
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:532) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    ... 13 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntitiesCache.entityCacheLoader; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityCacheLoader': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 31 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityCacheLoader': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1120) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1044) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 33 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 44 common frames omitted
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 46 common frames omitted
10:27:10.197 [main] ERROR c.b.c.runner.ConnectOnceRunner - Failed to start main Spring http listener
javax.servlet.ServletException: spring
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:553) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) ~[jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) ~[jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) ~[jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) ~[jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.server.Server.doStart(Server.java:282) ~[jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) ~[jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031]
    at com.betterknow.connector.core.AbstractRunner.startNewServer(AbstractRunner.java:298) [connector-core-0.3.12.jar:na]
    at com.betterknow.connectonce.runner.ConnectOnceRunner.runOverride(ConnectOnceRunner.java:77) ~[connectonce-connector-core-0.7.17.jar:na]
    at com.betterknow.connector.core.AbstractRunner.run(AbstractRunner.java:179) [connector-core-0.3.12.jar:na]
    at com.betterknow.connectonce.runner.ConnectOnceMain.main(ConnectOnceMain.java:16) [connectonce-connector-core-0.7.17.jar:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entitiesCache': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntitiesCache.entityCacheLoader; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityCacheLoader': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at javax.servlet.GenericServlet.init(GenericServlet.java:244) ~[javax.servlet-3.0.0.v201112011016.jar:na]
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:532) ~[jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031]
    ... 13 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntitiesCache.entityCacheLoader; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityCacheLoader': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 31 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityCacheLoader': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1120) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1044) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 33 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate com.betterknow.connectonce.connector.peoplesoft.jdbc.cache.EntityCacheLoader.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 44 common frames omitted
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
    ... 46 common frames omitted

尝试像这样使用查询并传递正确的参数