@@ -451,7 +451,6 @@ public <E extends QEntity<E>> String buildUpdateCascaded2(Object baseId, QJoin j
451451 if (subEntities .isEmpty ()) {
452452 sbQuery .write ("select * from " ).write (rootSchema .getTableName ()).write (" where false" );
453453 } else {
454- sbQuery .incTab ();
455454 sbQuery .write ("select " );
456455 sbQuery .incTab ();
457456 for (ColumnMapping mapping : columnMappings ) {
@@ -473,7 +472,6 @@ public <E extends QEntity<E>> String buildUpdateCascaded2(Object baseId, QJoin j
473472 sbQuery .decTab ();
474473 }
475474 sbQuery .decTab ();
476- sbQuery .decTab ();
477475 sbQuery .write ("\n ), _UPSERT as (\n " );
478476 sbQuery .incTab ();
479477 sbQuery .write ("INSERT INTO " ).write (rootSchema .getTableName ()).write (" (\n " );
@@ -496,7 +494,9 @@ public <E extends QEntity<E>> String buildUpdateCascaded2(Object baseId, QJoin j
496494 sbQuery .write (col ).write (", " );
497495 }
498496 sbQuery .shrinkLength (2 );
497+ sbQuery .incTab ();
499498 sbQuery .replaceTrailingComma (")\n DO UPDATE SET\n " );
499+ sbQuery .incTab ();
500500 for (ColumnMapping mapping : columnMappings ) {
501501 if (mapping .columnName .equals ("id" )) continue ;
502502 String value = mapping .columnConfig == null ? "EXCLUDED." + mapping .columnName :
@@ -507,28 +507,34 @@ public <E extends QEntity<E>> String buildUpdateCascaded2(Object baseId, QJoin j
507507 sbQuery .shrinkLength (2 );
508508 sbQuery .decTab ();
509509 sbQuery .decTab ();
510- sbQuery .write ("\n )\n DELETE FROM hql_demo.bookstore.book_order t_0\n " );
510+ sbQuery .write ("\n RETURNING *" );
511+ sbQuery .decTab ();
512+ sbQuery .write ("\n ), _DELETE as (" );
511513 sbQuery .incTab ();
512- sbQuery .write ("WHERE NOT EXISTS (\n " );
514+ sbQuery .write ("\n DELETE FROM hql_demo.bookstore.book_order t_0" );
515+ sbQuery .write ("\n WHERE " );
516+ String joinOn = join .getJoinCriteria ();
517+ joinOn = joinOn .replaceAll ("#" , "t_0" );
518+ joinOn = joinOn .replaceAll ("@\\ .(\\ w+)" , "#{parent.$1}" );
519+ sbQuery .write (joinOn );
520+
521+ sbQuery .incTab ();
522+ sbQuery .write ("\n AND NOT EXISTS (\n " );
513523 sbQuery .incTab ();
514524 sbQuery .write ("SELECT 1\n " );
515- sbQuery .write ("FROM _DATA \n " );
525+ sbQuery .write ("FROM _UPSERT \n " );
516526 sbQuery .write ("WHERE " );
517527 sbQuery .incTab ();
518528 for (String col : rootSchema .getPrimaryKeys ()) {
519- sbQuery .write ("t_0." ).write (col ).write (" = _DATA ." ).write (col ).write ("\n AND " );
529+ sbQuery .write ("t_0." ).write (col ).write (" = _UPSERT ." ).write (col ).write ("\n AND " );
520530 }
521531 sbQuery .decTab ();
522- sbQuery .shrinkLength (5 );
532+ sbQuery .shrinkLength (6 ). trim ( );
523533 sbQuery .decTab ().write ("\n )" );
524- String joinOn = join .getJoinCriteria ();
525- joinOn = joinOn .replaceAll ("#" , "t_0" );
526- joinOn = joinOn .replaceAll ("@\\ .(\\ w+)" , "#{parent.$1}" );
527- sbQuery .write ("AND " ).write (joinOn );
528-
529534 sbQuery .decTab ();
530- sbQuery .write (";\n select * from " ).write (rootSchema .getTableName ());
531- sbQuery .write ("\n where " ).write (joinOn );
535+ sbQuery .decTab ();
536+ sbQuery .write ("\n )" );
537+ sbQuery .write ("\n select * from _UPSERT" );
532538 return sbQuery .toString ();
533539 }
534540
0 commit comments