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属性确实是唯一的,则可以选择一个控制器实体。然后,在插入新的控制器实体时,可以首先检查它是否已经存在于事务中 数据存储中没有通用的内置方式来确保属性值的唯一性。本节讨论了近似唯一性约束的一些可能策略
我还建议您在数据存储上和数据存储中进行阅读。这是一个有效的做法,但我解决了我的问题。 我正在为导演制作一个实体,电影应该是这样