ObjectBox是否分配负ID?有效ID校验规则咨询
ObjectBox ID 校验与分配规则详解
好问题!我来帮你把ObjectBox的ID规则理清楚,直接给你明确结论和依据:
1. ObjectBox会不会分配负ID?
答案是不会。官方文档明确说明0和-1是保留值:
- 0:未被持久化的实体默认ID(刚创建还没存到数据库里的对象)
- -1:用于特殊内部场景(比如关联关系中的占位符)
ObjectBox的ID分配逻辑是从当前数据库中最高的正ID开始递增,绝对不会自动生成负的ID值。
2. 有效ID的校验条件应该用哪个?
你只需要用id > 0就足够了。id < -1的情况在正常使用中根本不会出现,完全没必要加入判断条件——因为ObjectBox既不会自动分配这类ID,也不建议你手动设置负ID(非-1),这会违背它的ID设计逻辑,可能引发未知问题。
3. 文档中从1开始的示例是可靠依据吗?
当然是可靠依据!这个示例不是单纯的演示,而是ObjectBox默认的ID分配行为:
- 初始状态下,第一个被持久化的实体ID就是1
- 后续每个新实体的ID会自动取当前数据库中最高ID的下一个正整数(比如当前最高是5,下一个就是6)
除非你手动通过API设置了自定义的初始ID(依然是正整数),否则所有持久化实体的ID都会从1开始递增。
内容的提问来源于stack exchange,提问作者cybergen
相关产品推荐
相关产品推荐

