|
|
if (jsonElement.isJsonArray()) {
List<JpaObject> updateList = new ArrayList<>();
List<JpaObject> insertList = new ArrayList<>();
jsonElement.getAsJsonArray().forEach(o -> {
JpaObject jo = gson.fromJson(o, cls);
if (o.getAsJsonObject().has("id") && jo.getId() != null) {
try {
JpaObject oldjo = emc.find(jo.getId(), cls);
if (oldjo != null) {
// 更新操作
jo.copyTo(oldjo, JpaObject.FieldsUnmodify);
updateList.add(oldjo);
} else {
// ID存在但数据库中不存在,按新增处理
insertList.add(jo);
}
} catch (Exception e) {
// 查找失败,按新增处理
insertList.add(jo);
}
} else {
// 没有ID,按新增处理
insertList.add(jo);
}
});
// 先处理更新
if (!updateList.isEmpty()) {
emc.beginTransaction(cls);
for (JpaObject jo : updateList) {
emc.check(jo, CheckPersistType.all); // 使用check而不是persist
}
emc.commit();
}
// 再处理新增
os.addAll(insertList);
} |
|