由于实体商店在存储空值时抛出,我设法获得了“黑客”以将空值保存到其中。但是,我不确定我的方法是否徒劳。这是一个片段: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 的十六进制表示。对于Integer
、Integer.MIN_VALUE
或Integer.MAX_VALUE
等。不要对单个属性使用混合类型的值,否则按属性值搜索或范围搜索将不起作用。
添加回答
举报
0/150
提交
取消