Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb 发送多值自定义数据时出错_Amazon Dynamodb_Dynamo Local - Fatal编程技术网

Amazon dynamodb 发送多值自定义数据时出错

Amazon dynamodb 发送多值自定义数据时出错,amazon-dynamodb,dynamo-local,Amazon Dynamodb,Dynamo Local,发送自定义对象集时,我遇到以下错误 2015年10月21日下午7:28:38 com.amazonaws.services.dynamodbv2.datamodeling.marshallers.ObjectSetToStringSetMarshaller marshall警告:将一组非字符串对象封送到DynamoDB StringSet。您将无法从中读取这些对象 DynamoDB除非你真的知道自己在做什么:它可能是一个 缺陷如果你确实知道自己在做什么,请不要理会这个警告, 但是请考虑使用自定义

发送自定义对象集时,我遇到以下错误

2015年10月21日下午7:28:38 com.amazonaws.services.dynamodbv2.datamodeling.marshallers.ObjectSetToStringSetMarshaller marshall警告:将一组非字符串对象封送到DynamoDB StringSet。您将无法从中读取这些对象 DynamoDB除非你真的知道自己在做什么:它可能是一个 缺陷如果你确实知道自己在做什么,请不要理会这个警告, 但是请考虑使用自定义封送器来代替这个。

com.amazonaws.AmazonServiceException:一个或多个参数值 无效:字符串集不能为空(服务: AmazonDynamoDBv2;状态代码:400;错误代码:ValidationException; 请求ID:S61P89234SI8PE61M8I9QTG8RNVV4KQNSO5AEMVJF66Q9ASUAJG)位于 amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1181) 在 amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:766) 在 amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:485) 在 amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:306) 在 amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1799) 在 amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:1614) 在 com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.doUpdateItem(DynamoDBMapper.java:1241) 在 com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$2.executeLowLevelRequest(DynamoDBMapper.java:937) 在 com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:1120) 在 com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:966) 在 com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:758) 位于的.dao.impl.DeviceDaoImpl.addDevice(DeviceDaoImpl.java:57) .admin.device.service.impl.DeviceServiceImpl.addDevice(DeviceServiceImpl.java:38)

这是发生这种情况的代码片段

    @DynamoDBTable(tableName="Device")
public class Device extends BaseEntity implements Serializable{
private Set<AsscoiatedReviewer> asscoiatedReviewers ;
// getters setter

    public Device addDevice(Device device) {
        device.setDeviceId(generateId());
        device.setCreatedTime(getCurrentTime());
        if (!StringUtils.isNullOrEmpty(device.getPincode())) {
            // get lat and long - do this for review team as well
            //TODO : move it to common place that can be accessed for review team too
            setLatLong(device);
            // calculate the distances between this organization and reviewers
            calculateAsscoiatedReviewersDistances(device);
        }
        mapper.save(device);
        Device device1 = mapper.load(Device.class, device.getDeviceId());


        return device1;
    }

    private void calculateAsscoiatedReviewersDistances(Device device)  {
        if(StringUtils.isNullOrEmpty(device.getPincode())) return;
        try {
            List<ReviewTeam> ReviewTeam = reviewTeamDao.getAllReviewTeams();
            Set<AsscoiatedReviewer> asscoiatedReviewers = new HashSet<AsscoiatedReviewer>();
            /*for (ReviewTeam reviewTeam2 : ReviewTeam) {
                if(StringUtils.isNullOrEmpty(reviewTeam2.getPincode())) continue;
                AsscoiatedReviewer asscoiatedReviewer = new AsscoiatedReviewer();
                asscoiatedReviewer.setReviewTeamId(reviewTeam2.getReviewTeamId());
                double distance = distance(new Double(device.getLat()), new Double(device.getLongt()),
                        new Double(reviewTeam2.getLat()), new Double(reviewTeam2.getLongt()));
                asscoiatedReviewer.setDistance(new Double(distance).toString());
                asscoiatedReviewers.add(asscoiatedReviewer);
            }*/
            device.setAsscoiatedReviewers(asscoiatedReviewers);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public class AsscoiatedReviewer implements Serializable,Comparable {

    /**
     *
     */
    private static final long serialVersionUID = -1906388056843006046L;

    private String distance;
    private String reviewTeamId;
// getters setters 
}
@DynamoDBTable(tableName=“Device”)
公共类设备扩展BaseEntity实现可序列化{
专用集助理浏览者;
//吸气剂二传手
公共设备添加设备(设备){
setDeviceId(generateId());
setCreatedTime(getCurrentTime());
如果(!StringUtils.isNullOrEmpty(device.getPincode())){
//获取lat和long-也为审查团队执行此操作
//TODO:将其移动到审查小组也可以访问的公共位置
setLatLong(装置);
//计算此组织与审阅者之间的距离
计算指定的视距(设备);
}
mapper.save(设备);
Device device1=mapper.load(Device.class,Device.getDeviceId());
返回装置1;
}
专用void计算专用视窗距离(设备){
if(StringUtils.isNullOrEmpty(device.getPincode())返回;
试一试{
List ReviewTeam=reviewTeamDao.getAllReviewTeams();
Set asscoiatedReviewers=new HashSet();
/*对于(ReviewTeam ReviewTeam 2:ReviewTeam){
如果(StringUtils.isNullOrEmpty(reviewTeam2.getPincode())继续;
AsscoiatedReviewer AsscoiatedReviewer=新的AsscoiatedReviewer();
asscoiatedReviewer.setReviewTeamId(reviewTeam2.getReviewTeamId());
double distance=距离(新的double(device.getLat()),新的double(device.getlont()),
新的Double(reviewTeam2.getLat()),新的Double(reviewTeam2.getlont());
setDistance(新的双精度(distance).toString());
添加(asscoiatedReviewer);
}*/
device.SetAsscoeAtedReviewers(AsscoeAtedReviewers);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
公共类AsscoeAtedReviewer实现了可序列化、可比较的{
/**
*
*/
私有静态最终长serialVersionUID=-19063880568483006046L;
私有字符串距离;
私有字符串reviewTeamId;
//吸气剂二传手
}
似乎错误是从下面的行发生的 device.SetAsscoeAtedReviewers(AsscoeAtedReviewers)

是否应将此信息整理/解封并发送至亚马逊?如有任何帮助,将不胜感激

更新:
在AsscoeAtedReviewers中填充数据时,我遇到以下异常

警告:将一组非字符串对象封送到DynamoDB StringSet。您将无法从中读取这些对象 DynamoDB除非你真的知道自己在做什么:它可能是一个 bug.如果你知道你在做什么,请不要理会这个警告, 但请考虑使用自定义封送器来代替此。 com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: 无法对类型类进行解组 in.forus.foruscare.entity.AsscoiatedReviewer没有自定义 封送拆收器或@DynamoDBDocument annotation.at com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.getObjectUnmarshaller(ConversionSchemas.java:590) 在 com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.augment(ConversionSchemas.java:497) 在 com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.getMemberUnmarshaller(ConversionSchemas.java:466) 在 com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.getObjectSetUnmarshaller(ConversionSchemas.java:520)

这是否意味着我需要使用DynamoDBDocument注释编写自定义封送拆收器或注释。如果是,这是一组自定义对象,您能否将指向封送拆收器简单示例的指针发送给我。我碰巧看到了其他Marshller,它们似乎没有