diff --git a/dotCMS/src/main/java/com/dotmarketing/business/PermissionBitFactoryImpl.java b/dotCMS/src/main/java/com/dotmarketing/business/PermissionBitFactoryImpl.java index 7e0c378c9c8c..b7533fcd6908 100644 --- a/dotCMS/src/main/java/com/dotmarketing/business/PermissionBitFactoryImpl.java +++ b/dotCMS/src/main/java/com/dotmarketing/business/PermissionBitFactoryImpl.java @@ -2309,7 +2309,7 @@ private void deleteInsertPermission(Permissionable permissionable, String type, String query = SQLUtil.generateUpsertSQL("permission_reference", "asset_id", "?", new String[]{"asset_id", "reference_id", "permission_type"}, new String[]{"?", "?", "?"}); - dc1.executeUpdate(query, permissionId, permissionId, + dc1.executeUpdate(query, permissionId, permissionId, newReference.getPermissionId(), type, permissionId, newReference.getPermissionId(), type); } diff --git a/dotCMS/src/main/java/com/dotmarketing/common/util/SQLUtil.java b/dotCMS/src/main/java/com/dotmarketing/common/util/SQLUtil.java index dde852664fee..f99670117ca4 100644 --- a/dotCMS/src/main/java/com/dotmarketing/common/util/SQLUtil.java +++ b/dotCMS/src/main/java/com/dotmarketing/common/util/SQLUtil.java @@ -321,8 +321,8 @@ private static boolean isValidSQLCharacter (final char c) { + "VALUES (%s) ON DUPLICATE KEY " + "UPDATE %s"; private final static String MSSQL_UPSERT_QUERY = - "MERGE INTO %s USING " - + "(SELECT %s [conditional]) AS dummy([conditional]) ON %s = %s " + "MERGE %s AS [Target] USING " + + "(SELECT %s AS %s) AS [Source] ON [Target].%s = [Source].%s " + "WHEN MATCHED THEN " + " UPDATE SET %s " + "WHEN NOT MATCHED THEN " @@ -358,7 +358,8 @@ public static String generateUpsertSQL (String table, String conditionalColumn, query = String.format(MSSQL_UPSERT_QUERY, table, conditionalValue, conditionalColumn, - conditionalValue, + conditionalColumn, + conditionalColumn, buffer.toString(), StringUtil.merge(columns), StringUtil.merge(values));