当前位置: 首页 > 知识库问答 >
问题:

JavaFX-自动增量ID

贲言
2023-03-14

这就是我所拥有的

public class AddNewCategoryController implements Initializable {

    @FXML
    private TextField name;

    @FXML
    private TextField description;

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
    }

    public void save(){
        final AtomicLong identifier = new AtomicLong(5);
        Long id = identifier.incrementAndGet();
        String catgoryName = name.getText();
        String categoryDescription = description.getText();

        Category category = new Category(id,catgoryName,categoryDescription);

        ReadingDataFromFiles.writeCategory(category);

    }
}

当程序运行时,会出现一个添加新类别的屏幕,用户必须写入类别的名称和描述,但ID应该是自动的,并且应该在每次用户输入新类别时增加ID。我这样做并没有达到预期效果,它只增加了一次,但由于初始值保持在5,所以它总是6。

共有1个答案

夏意蕴
2023-03-14

移动此行:

final AtomicLong identifier = new AtomicLong(5);

…更高级别,在方法之外,作为类上的成员字段。

在现有代码中,对该save方法的每次调用都会创建一个新的AtomicLong,以替换以前的方法。所以你的计数不能累加。

恰当的命名可以帮助澄清。那个原子龙不是一个标识符。它是一个"标识符发生器"。每个由其增量和获取方法返回的数字都是标识符。

 类似资料:
  • 问题内容: 使用Postgres,我试图用SQL自动编号主键。但是,这给了我一个错误。 错误: 知道为什么吗? 问题答案: Postgres 10或更高版本 列(请参见下文)保持不变。但是考虑一个 专栏。Postgres10实现了此标准SQL功能。 手册中的基本语法和信息。 __用列 创建 表 将 列 添加 到现有表 表可能填充也可能不填充行。 同时使它成为PK(表还不能拥有PK): 有关的: 如

  • 问题内容: 我正在尝试在mysql数据库中创建一列,该列自动递增1但从0-Z开始然后滚动。 例如000、001、002,…,009、00A,00B,…,00Z,010,…,0ZZ,…,100。 我想让数据库通过自动递增字段创建列。 我的想法是: 为从0到36的每个字符创建一列,然后将行N(其中N是最低有效数字)自动递增1。然后在每列上添加触发器,以在第N列达到36时向N-1列添加1 。 创建一个包

  • 问题内容: 我刚遇到一个我无法解决的问题。 我有一个用作队列的数据库表,我在其中存储一些记录。处理记录后,它们将被删除。删除是由Rails构建在一个触发MySql数据库的循环中调用的。 但是现在我注意到,在表中将 autoIncrement Id (主键)设置回 1 。(这损坏了我在审计表中的引用。相同记录现在指向多个不同的项目队列) 我不使用或删除表构造,而是在代码中再次创建它。 是否有人遇到像

  • 问题内容: 我正在使用php和mysql。我有一个表,其中id列设置为自动递增作为主键。我正在尝试添加另一个名为sort_order的列。插入行后,sort_order列应自动递增。然后,用户将能够更改sort_order值。但是mysql不允许多于一列的自动递增? 自动递增sort_order值的最佳方法是什么? 受欢迎的要求,更多的解释。 在管理区域中,用户将具有类别列表。用户可以使用java

  • 问题内容: 是否可以自动增加非主密钥? 表“ book_comments” 该表上将没有其他索引。但是,我想使列自动递增,以便可以轻松创建另一个表: 表格“ book_comments_votes” 用户将只能对每个书评进行一次投票。该表通过主键强制执行此规则。 题: 是否可以自动增加非主键-例如,自动增加表“ book_comments”中的列? 替代方案,讨论: 如上所述,我想这样做是为了简化

  • 问题内容: 我刚刚使用MySQL查询浏览器创建了一个新表,并注意到在“自动增量列”下有一个勾号。这是如何运作的? 以编程方式添加到数据库时,是否仅添加一个数字,然后数据库会自动将该数字递增? 每次有新用户在我的网站上注册时,我都希望他们的客户ID(仅整数)自动递增,因此我不必尝试随机生成一个唯一的数字。 可以简单地完成吗? 谢谢! 问题答案: 以编程方式添加到数据库时,是否仅添加一个数字,然后数据