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

由于实体商店在存储空值时抛出,我设法获得了“黑客”以将空值保存到其中。但是,我不确定我的方法是否徒劳。


这是一个片段:


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这里需要的偶数吗?


茅侃侃
浏览 146回答 1
1回答

沧海一幻觉

registerCustomPropertyType多次是安全的,尽管它通常打算在 init 阶段调用一次。如果我真的需要区分缺少属性值和具有空值的属性,那么我会尝试定义非空值来替换空值。对于String,它可以是 UUID 的十六进制表示。对于Integer、Integer.MIN_VALUE或Integer.MAX_VALUE等。不要对单个属性使用混合类型的值,否则按属性值搜索或范围搜索将不起作用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java