我在尝试弄清楚如何查询 NoSQL Nitrite (NO2) 数据库中的对象/记录时遇到问题,并且如果存在则不插入。在检查对象/记录是否存在并尝试创建重复项时,查询始终返回 FALSE。
我想尝试使用 .contains() 方法,但我不确定如何重写 equal() 和 hashCode() 方法。我尝试重写 equals() 和 hashCode() 方法,但如果我做得正确,并且意识到新的分支对象
branch
在插入存储库之前没有与之关联的 id,则不会。
以下是我的变量观察列表:
当用户单击菜单项创建分支时:
newBranchMenuItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Branch branch = generateBranchDialog();
ObjectRepository<Branch> repository = db.getRepository(Branch.class);
Cursor<Branch> results = repository.find();
if(results.size() == 0) {
WriteResult result = repository.insert(branch);
branches.add(branch);
} else {
for(Branch br : results) {
if (br.getName() == branch.getName()) {
System.out.println("The specified branch already exists");
} else {
WriteResult result = repository.insert(branch);
branches.add(branch);
}
}
}
branchTableView.setItems(branches);
}
});
我的Branch类如下:
package com.app.bankapplet.branch;
import org.dizitart.no2.NitriteId;
import org.dizitart.no2.objects.Id;
import java.util.Objects;
public class Branch {
@Id
private NitriteId id;
private String name;
public Branch() {
}
public Branch(String name) {
this.name = name;
}
public NitriteId getId() {
return id;
}
public String getName() {
return toTitleCase(name);
}
public void setName(String name) {
this.name = name;
}
// @Override
// public boolean equals(Object obj) {
// if(obj == this) {
// return true;
// }
// if(!(obj instanceof Branch)) {
// return false;
// }
// Branch branch = (Branch) obj;
// return id == branch.id && Objects.equals(name, branch.name);
// }
// @Override
// public int hashCode() {
// return Objects.hash(id, name);
// }
private static String toTitleCase(String item) {
if (item == null || item.isEmpty()) {
return item;
}
StringBuilder convertedString = new StringBuilder();
boolean convertNext = true;
for (char ch : item.toCharArray()) {
if (Character.isSpaceChar(ch)) {
convertNext = true;
} else if (convertNext) {
ch = Character.toTitleCase(ch);
convertNext = false;
} else {
ch = Character.toLowerCase(ch);
}
convertedString.append(ch);
}
return convertedString.toString();
}
}