亚硝酸盐 (NO2) NoSQL 数据库在尝试匹配现有记录时始终返回 FALSE

问题描述 投票:0回答:0

我在尝试弄清楚如何查询 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();
    }
}
java javafx nosql
© www.soinside.com 2019 - 2024. All rights reserved.