0

AlertService#findAll()メソッドで NullPointerException を取得しています:

java.lang.NullPointerException
com.t2.claims.services.AlertService.findAll(AlertService.java:24)
com.t2.claims.controllers.AlertIndexController.doAfterCompose(AlertIndexController.java:28)

これは findAll() メソッドです。

public List<Alert> findAll() {
    Query query = new Query(where("id").exists(true));
    return mongoTemplate.find(query, Alert.class);
}

AlertService 全体は次のようになります。

package com.t2.claims.services;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.t2.claims.models.Alert;
import static org.springframework.data.mongodb.core.query.Criteria.where;

@Service("alertService")
@Transactional
public class AlertService {

    @Resource(name="mongoTemplate")
    private MongoTemplate mongoTemplate;

    public List<Alert> findAll() {
        Query query = new Query(where("id").exists(true));
        return mongoTemplate.find(query, Alert.class);
    }

    public void add(Alert alert) {
        try {
            mongoTemplate.insert(alert);
        } catch(Exception e) {}
    }
    public void update(Alert alert) {
        Query query = new Query(where("id").is(alert.getId()));
        try {
            Update update = new Update();
            update.set("assignedUser", alert.getAssignedUser());
            update.set("status", alert.getStatus());
            update.set("category", alert.getCategory());
            update.set("vehicleStatus", alert.getVehicleStatus());
            update.set("brand", alert.getBrand());
            mongoTemplate.updateMulti(query, update, Alert.class);
        } catch(Exception e) {}
    }
    public void delete(Alert alert) {
        try {
            Query query = new Query(where("id").is(alert.getId()));
            // Run the query and delete the entry
            mongoTemplate.remove(query, Alert.class);
        } catch(Exception e) {}
    }
}

IntegrateMongoGithub で私のブランチをチェックして、詳細を確認する方が簡単かもしれません。https://github.com/georgeotoole/T2ClaimsPortal/tree/IntegrateMongo

自分のコードに問題があるのか​​、それともマシン上の mongo に問題があるのか​​ 理解できません.. ?

ありがとう

4

1 に答える 1

1

私はそれが...の場合だと確信しています:

@Resource(name="mongoTemplate")
private MongoTemplate mongoTemplate;

...注射されていません。

mongoTemplate注入されたことを確認するために使用するメソッドに null チェックを追加するのはどうですか?

public List<Alert> findAll() {
    Query query = new Query(where("id").exists(true));
    if (mongoTemplate == null) {
        throw new IllegalStateException("mongoTemplate is null");
    }
    return mongoTemplate.find(query, Alert.class);
}
于 2013-10-15T10:40:18.297 に答える