Map.remove("x") 从 Postgres Json 列中的相关 "x" 中删除
Map.remove("x") removes from relevant "x" in Postgres Json column
我正在从 Postgres DB 读取数据,然后我需要从红色数据中删除 JSON 数据的一部分。但这对数据库级别有影响,因为这甚至会从数据库级别删除数据。
删除方法
private static Map<String,Object> removePrivate(Object key) {
try {
Map<String, Object> keyMap = (Map<String, Object>) key;
keyMap.remove("d");
return keyMap;
} catch (Exception ex) {
log.warn("no private component 'd' in private key",ex);
return null;
}
}
这里用到了remove方法
public List<Key> getKeys(URI controller, URI url, String type, String purpose, String reference, Long limit, boolean exportPrivate) {
List<Key> keyList = new ArrayList<>();
List<com.xxx.model.Key> keys = keyRepository.getKeys(controller, url, type, purpose, reference, limit);
if (keys == null || keys.isEmpty()) throw new BadRequestException("No keys found for given settings");
keys.forEach(key -> {
try {
Key k = modelMapper.map(key, Key.class);
keyList.add(k);
} catch (Exception e) {
log.error("Parse exception {}", e.getMessage(),e);
throw new BadRequestException("Invalid key format",e);
}
});
if (!exportPrivate) keyList.forEach(key -> key.setKey(removePrivate(key.getKey())));
return keyList;
}
为什么从地图中删除 属性“d”会对数据库级别产生影响,并且它还会从“keys”列表中删除“d”组件,但它应该删除仅来自“keyList”列表。
问题的原因是 @Trasactional
。当我删除此问题时,问题已删除。
但是,如果有人可以解释 @Trasactional
如何导致这样的问题,那就太好了。
我正在从 Postgres DB 读取数据,然后我需要从红色数据中删除 JSON 数据的一部分。但这对数据库级别有影响,因为这甚至会从数据库级别删除数据。
删除方法
private static Map<String,Object> removePrivate(Object key) {
try {
Map<String, Object> keyMap = (Map<String, Object>) key;
keyMap.remove("d");
return keyMap;
} catch (Exception ex) {
log.warn("no private component 'd' in private key",ex);
return null;
}
}
这里用到了remove方法
public List<Key> getKeys(URI controller, URI url, String type, String purpose, String reference, Long limit, boolean exportPrivate) {
List<Key> keyList = new ArrayList<>();
List<com.xxx.model.Key> keys = keyRepository.getKeys(controller, url, type, purpose, reference, limit);
if (keys == null || keys.isEmpty()) throw new BadRequestException("No keys found for given settings");
keys.forEach(key -> {
try {
Key k = modelMapper.map(key, Key.class);
keyList.add(k);
} catch (Exception e) {
log.error("Parse exception {}", e.getMessage(),e);
throw new BadRequestException("Invalid key format",e);
}
});
if (!exportPrivate) keyList.forEach(key -> key.setKey(removePrivate(key.getKey())));
return keyList;
}
为什么从地图中删除 属性“d”会对数据库级别产生影响,并且它还会从“keys”列表中删除“d”组件,但它应该删除仅来自“keyList”列表。
问题的原因是 @Trasactional
。当我删除此问题时,问题已删除。
但是,如果有人可以解释 @Trasactional
如何导致这样的问题,那就太好了。