原来的mysql方法
public static String getSaveAndUpdateDossierOutWithSQLDM1(List<DossierOut> dossierOutList, String suffix) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("INSERT INTO " + TableConstant.TABLE_C_DOSSIER_OUT + "_" + suffix + " (id, ai, child_id, parent_id, task_id, ajbh, type, ");
stringBuilder.append("title, sort, node_id, recognize, org_id, cata,release_sort, published) VALUES ");
for (DossierOut dossierOut : dossierOutList) {
stringBuilder.append("('" + dossierOut.getId() + "', " + (dossierOut.getAi()? 1 : 0) + ", '" +
dossierOut.getChildId() + "', '" + dossierOut.getParentId() + "', '" +
dossierOut.getTaskId() + "', '" + dossierOut.getAjbh() + "', '" +
dossierOut.getType().getType() + "' , '" + dossierOut.getTitle() + "', " +
dossierOut.getSort() + ", '" + dossierOut.getNodeId() + "', " +
(dossierOut.getRecognize() ? 1 : 0) + ", '" + dossierOut.getOrgId() + "', " +
(dossierOut.getCata() ? 1 : 0) + "," + (dossierOut.getReleaseSort() == null ? 0 : dossierOut.getReleaseSort()) + ", '" + (StringUtils.isEmpty(dossierOut.getPublished()) ? "" : dossierOut.getPublished()) + "') ,");
}
String sql = stringBuilder.substring(0, stringBuilder.length() - 1); // 去掉最后一个逗号
String updateSql = " ON DUPLICATE KEY UPDATE ai = VALUES(ai) ,child_id = VALUES(child_id),parent_id = VALUES(parent_id), " +
"task_id = VALUES(task_id),title = VALUES(title ),sort = VALUES(sort)," +
" node_id = VALUES(node_id ),recognize = VALUES(recognize), cata = VALUES(cata), release_sort = VALUES(release_sort) ,published = VALUES(published)";
sql += updateSql;
return sql;
}
用的是jpa+hibernate+达梦
现在需要怎么修改。
尝试过用jpa的saveAll方法,但是报错:Batch update returned unexpected row count from update [0]; actual row count: 51; expected: 1