2

Springリポジトリを介して簡単なドキュメントを保存するのに問題があります。ドキュメントは次のとおりです。packagecom.foundry.domain;

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

import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.GeoSpatialIndexed;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.layers.repository.mongo.RooMongoEntity;
import org.springframework.roo.addon.tostring.RooToString;

import com.foundry.domain.location.Location;

@RooJavaBean
@RooToString
@RooMongoEntity
public class Sensor {
    @Id
    String id;

    @Indexed(unique=true)
    String name;

    @NotNull
    String typeRef;

    @NotNull
    @Indexed
    private List<String> tags = new ArrayList<String>();

    @GeoSpatialIndexed
    Location location;

    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "M-")
    private Date creationDate = new Date();


}

そして、私のテストクラスでは、次のことを行っています。

@Test
    public void testSaveSingleSensor(){
        Sensor s = new Sensor();
        s.setName("Test");
        s.setLocation(new Location());
        s.getLocation().setX(12);
        s.getLocation().setY(13);
        s.getLocation().setZ(14);
        s.setTypeRef("blah");
        s = iSensorRepository.save(s);
        s = iSensorRepository.findOne(s.getId());
        Assert.assertNotNull(s);
        Assert.assertTrue(s.getId() != null);
    }

私は基本的にセンサーを作成し、それを保存してからすぐに取得しようとします。私が知っているのは、Locationオブジェクトが原因で保存されないということです。ロケーションオブジェクトの設定をコメントアウトすると、機能します。ロケーションオブジェクトは次のとおりです。

package com.foundry.domain.location;

import java.util.Date;

import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.tostring.RooToString;

@RooJavaBean
@RooToString
public class Location {
    double x=0;
    double y=0;
    double z=0;

    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "M-")
    private Date lastUpdate;

}

これは、地理空間インデックスに対する私の誤解と関係があると思います。他のデータ(zとlastUpdate)を持つことができると思いますが、おそらく私は間違っています。それ以外のことを示すものは何も見つかりませんでした。より多くのテストが来ていますが、すべての助けがありがたいです。

4

0 に答える 0