为了账号安全,请及时绑定邮箱和手机立即绑定

将 null 存储为实体属性的值?

将 null 存储为实体属性的值?

茅侃侃 2021-08-04 09:53:01
由于实体商店在存储空值时抛出,我设法获得了“黑客”以将空值保存到其中。但是,我不确定我的方法是否徒劳。这是一个片段:entityStore.executeInTransaction(new StoreTransactionalExecutable() {                @Override                public void execute(@NotNull final StoreTransaction txn) {                    try {                        entityStore.registerCustomPropertyType(txn, UndefinedIterable.class, UndefinedBinding.BINDING);                    } catch (Exception e) {                    }                    final Entity entity = txn.newEntity(storeName);                    Iterator<String> it = comparableMap.keySet().iterator();                    while (it.hasNext()) {                        String key = it.next();                        Comparable value = comparableMap.get(key);                        if(value == null) {                            entity.setProperty(key, new UndefinedIterable());                        } else {                            entity.setProperty(key, value);                        }                    }这里的第一个问题是,registerCustomPropertyType一遍又一遍是否安全,因为每次服务器收到 POST 请求时都会调用此方法。接下来是UndefinedIterable这里需要的偶数吗?
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

registerCustomPropertyType多次是安全的,尽管它通常打算在 init 阶段调用一次。

如果我真的需要区分缺少属性值和具有空值的属性,那么我会尝试定义非空值来替换空值。对于String,它可以是 UUID 的十六进制表示。对于IntegerInteger.MIN_VALUEInteger.MAX_VALUE等。不要对单个属性使用混合类型的值,否则按属性值搜索或范围搜索将不起作用。


查看完整回答
反对 回复 2021-08-04
  • 1 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信