|
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