我无法通过我的 spring 存储库保存一个简单的文档。这是文件:包com.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;
}
我相信这与我对 GeoSpatial Index 的误解有关。我假设我们可以有其他数据(z 和 lastUpdate),但也许我错了。我没有发现任何其他指示。更多测试即将到来,但感谢所有帮助。