|
37 | 37 | import org.hibernate.sql.ast.SqlAstTranslator;
|
38 | 38 | import org.hibernate.sql.ast.tree.AbstractUpdateOrDeleteStatement;
|
39 | 39 | import org.hibernate.sql.ast.tree.MutationStatement;
|
40 |
| -import org.hibernate.sql.ast.tree.expression.ColumnReference; |
41 | 40 | import org.hibernate.sql.ast.tree.expression.Expression;
|
42 |
| -import org.hibernate.sql.ast.tree.expression.JdbcLiteral; |
43 | 41 | import org.hibernate.sql.ast.tree.from.MutatingTableReferenceGroupWrapper;
|
44 | 42 | import org.hibernate.sql.ast.tree.from.NamedTableReference;
|
45 | 43 | import org.hibernate.sql.ast.tree.predicate.InSubQueryPredicate;
|
@@ -95,29 +93,28 @@ protected SqlAstTranslator<? extends JdbcOperationQueryMutation> createTranslato
|
95 | 93 | return factory.getJdbcServices()
|
96 | 94 | .getJdbcEnvironment()
|
97 | 95 | .getSqlAstTranslatorFactory()
|
98 |
| - .buildMutationTranslator( factory, mutationStatement() ); |
| 96 | + .buildMutationTranslator( factory, createDeleteAst() ); |
99 | 97 | }
|
100 | 98 |
|
101 |
| - private MutationStatement mutationStatement() { |
| 99 | + // Copy and paste from superclass |
| 100 | + private MutationStatement createDeleteAst() { |
| 101 | + final MutationStatement ast; |
102 | 102 | if ( entityDescriptor.getSoftDeleteMapping() == null ) {
|
103 |
| - return sqmInterpretation.getSqlAst(); |
| 103 | + ast = sqmInterpretation.getSqlAst(); |
104 | 104 | }
|
105 |
| - final AbstractUpdateOrDeleteStatement sqlDeleteAst = sqmInterpretation.getSqlAst(); |
106 |
| - final NamedTableReference targetTable = sqlDeleteAst.getTargetTable(); |
107 |
| - final SoftDeleteMapping columnMapping = getEntityDescriptor().getSoftDeleteMapping(); |
108 |
| - final ColumnReference columnReference = new ColumnReference( targetTable, columnMapping ); |
109 |
| - //noinspection rawtypes,unchecked |
110 |
| - final JdbcLiteral jdbcLiteral = new JdbcLiteral( |
111 |
| - columnMapping.getDeletedLiteralValue(), |
112 |
| - columnMapping.getJdbcMapping() |
113 |
| - ); |
114 |
| - final Assignment assignment = new Assignment( columnReference, jdbcLiteral ); |
115 |
| - |
116 |
| - return new UpdateStatement( |
117 |
| - targetTable, |
118 |
| - Collections.singletonList( assignment ), |
119 |
| - sqlDeleteAst.getRestriction() |
120 |
| - ); |
| 105 | + else { |
| 106 | + final AbstractUpdateOrDeleteStatement sqlDeleteAst = sqmInterpretation.getSqlAst(); |
| 107 | + final NamedTableReference targetTable = sqlDeleteAst.getTargetTable(); |
| 108 | + final SoftDeleteMapping columnMapping = getEntityDescriptor().getSoftDeleteMapping(); |
| 109 | + final Assignment assignment = columnMapping.createSoftDeleteAssignment( targetTable ); |
| 110 | + |
| 111 | + ast = new UpdateStatement( |
| 112 | + targetTable, |
| 113 | + Collections.singletonList( assignment ), |
| 114 | + sqlDeleteAst.getRestriction() |
| 115 | + ); |
| 116 | + } |
| 117 | + return ast; |
121 | 118 | }
|
122 | 119 |
|
123 | 120 | @Override
|
|
0 commit comments