Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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
Java 筛选重复值。_Java_Google Cloud Datastore_Google Cloud Platform - Fatal编程技术网

Java 筛选重复值。

Java 筛选重复值。,java,google-cloud-datastore,google-cloud-platform,Java,Google Cloud Datastore,Google Cloud Platform,我试图添加一个过滤器来检查用户可能输入的重复值。我不确定我的问题哪里出了错 我的查询没有进入检查名称是否已存在的循环 我对谷歌很陌生。如果有人能告诉我如何解决我的问题,或者是否有更好的解决方案 else if ( commandEls[0].equals( "add_director" ) ) { String name = commandEls[1]; String gender = commandEls[2]; String date_

我试图添加一个过滤器来检查用户可能输入的重复值。我不确定我的问题哪里出了错

我的查询没有进入检查名称是否已存在的循环

我对谷歌很陌生。如果有人能告诉我如何解决我的问题,或者是否有更好的解决方案

    else if ( commandEls[0].equals( "add_director" ) ) {
        String name = commandEls[1];
        String gender = commandEls[2];
        String date_of_birth = commandEls[3];


        boolean duplicate = false;
        //add a director record with the given fields to the datastore, don't forget to check for duplicates

        Entity addDirectorEntity = new Entity("Director");

        // check if the entity already exits 
        // if !duplicate add, else "Already exisits"

        Query directorExists = new Query("Movies");

        // Director Name is the primary key
        directorExists.addFilter("directorName",Query.FilterOperator.EQUAL, name);
        System.out.print(name);
        PreparedQuery preparedDirectorQuery = datastore.prepare(directorExists);

        System.out.print("outside");    
        for(Entity directorResult : preparedDirectorQuery.asIterable()){
            // result already exists in the database
            String dName = (String) directorResult.getProperty(name);
            System.out.print(dName);
            System.out.print("finish");
            duplicate = true;
        }

        if(!duplicate){ 
            addDirectorEntity.setProperty("directorName",name);
            addDirectorEntity.setProperty("directorGender",gender);
            addDirectorEntity.setProperty("directorDOB",date_of_birth);

            try{
                datastore.put(addDirectorEntity);
                results = "Command executed successfully!";
            }
            catch(Exception e){
                results = "Error";
            }
        }

        else {
            results = "Director already exists!";
        }

    }

非祖先查询(如示例中的查询)最终是一致的,因此它们无法可靠地检测重复的属性值。祖先查询是完全一致的,但它们需要使用实体组对数据进行结构化,这是以写吞吐量为代价的

如果示例中的directorName属性确实是唯一的,则可以选择一个控制器实体。然后,在插入新的控制器实体时,可以首先检查它是否已经存在于事务中

数据存储中没有通用的内置方式来确保属性值的唯一性。本节讨论了近似唯一性约束的一些可能策略


我还建议您在数据存储上和数据存储中进行阅读。

这是一个有效的做法,但我解决了我的问题。 我正在为导演制作一个实体,电影应该是这样