Skip to content

Commit cb5b305

Browse files
committed
Replace BatchJdbcOperations with standard NamedParameterJdbcOperations
BatchJdbcOperations is still there, but deprecated, and not used except for deprecated places kept for backward compatibility. This is possible since Spring Framework made the features offered by `BatchJdbcOperations` part of `NamedParameterJdbcOperations`. See spring-projects/spring-framework#28132 See #1191
1 parent 85123e2 commit cb5b305

11 files changed

+81
-62
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BatchJdbcOperations.java

+2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@
4444
*
4545
* @author Chirag Tailor
4646
* @since 2.4
47+
* @deprecated Use the standard {@link org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations} instead.
4748
*/
49+
@Deprecated(since = "3.2")
4850
public class BatchJdbcOperations {
4951

5052
private final JdbcOperations jdbcOperations;

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingBatchInsertStrategy.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.springframework.data.relational.core.dialect.Dialect;
2424
import org.springframework.data.relational.core.dialect.IdGeneration;
2525
import org.springframework.data.relational.core.sql.SqlIdentifier;
26+
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
2627
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
2728
import org.springframework.jdbc.support.GeneratedKeyHolder;
2829
import org.springframework.lang.Nullable;
@@ -33,21 +34,23 @@
3334
*
3435
* @author Chirag Tailor
3536
* @author Kurt Niemi
37+
* @author Jens Schauder
3638
* @since 2.4
3739
*/
3840
class IdGeneratingBatchInsertStrategy implements BatchInsertStrategy {
3941

4042
private final InsertStrategy insertStrategy;
4143
private final Dialect dialect;
42-
private final BatchJdbcOperations batchJdbcOperations;
44+
private final NamedParameterJdbcOperations jdbcOperations;
4345
private final SqlIdentifier idColumn;
4446

4547
IdGeneratingBatchInsertStrategy(InsertStrategy insertStrategy, Dialect dialect,
46-
BatchJdbcOperations batchJdbcOperations, @Nullable SqlIdentifier idColumn) {
48+
NamedParameterJdbcOperations jdbcOperations, @Nullable SqlIdentifier idColumn) {
4749

4850
this.insertStrategy = insertStrategy;
4951
this.dialect = dialect;
50-
this.batchJdbcOperations = batchJdbcOperations;
52+
this.jdbcOperations = jdbcOperations;
53+
5154
this.idColumn = idColumn;
5255
}
5356

@@ -66,12 +69,12 @@ public Object[] execute(String sql, SqlParameterSource[] sqlParameterSources) {
6669

6770
String[] keyColumnNames = getKeyColumnNames();
6871
if (keyColumnNames.length == 0) {
69-
batchJdbcOperations.batchUpdate(sql, sqlParameterSources, holder);
72+
jdbcOperations.batchUpdate(sql, sqlParameterSources, holder);
7073
} else {
71-
batchJdbcOperations.batchUpdate(sql, sqlParameterSources, holder, keyColumnNames);
74+
jdbcOperations.batchUpdate(sql, sqlParameterSources, holder, keyColumnNames);
7275
}
7376
} else {
74-
batchJdbcOperations.batchUpdate(sql, sqlParameterSources, holder);
77+
jdbcOperations.batchUpdate(sql, sqlParameterSources, holder);
7578
}
7679
Object[] ids = new Object[sqlParameterSources.length];
7780
List<Map<String, Object>> keyList = holder.getKeyList();

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/InsertStrategyFactory.java

+21-12
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,32 @@
2727
* whether the insert is expected to generate ids.
2828
*
2929
* @author Chirag Tailor
30+
* @author Jens Schauder
3031
* @since 2.4
3132
*/
3233
public class InsertStrategyFactory {
3334

34-
private final NamedParameterJdbcOperations namedParameterJdbcOperations;
35-
private final BatchJdbcOperations batchJdbcOperations;
35+
private final NamedParameterJdbcOperations jdbcOperations;
3636
private final Dialect dialect;
3737

38-
public InsertStrategyFactory(NamedParameterJdbcOperations namedParameterJdbcOperations,
39-
BatchJdbcOperations batchJdbcOperations, Dialect dialect) {
38+
public InsertStrategyFactory(NamedParameterJdbcOperations jdbcOperations, Dialect dialect) {
4039

41-
this.namedParameterJdbcOperations = namedParameterJdbcOperations;
42-
this.batchJdbcOperations = batchJdbcOperations;
40+
this.jdbcOperations = jdbcOperations;
4341
this.dialect = dialect;
4442
}
4543

44+
/**
45+
* Constructor with additional {@link BatchJdbcOperations} constructor.
46+
*
47+
* @deprecated Use the {@link InsertStrategyFactory#InsertStrategyFactory(NamedParameterJdbcOperations, Dialect)}
48+
* instead.
49+
*/
50+
@Deprecated(since = "3.2")
51+
public InsertStrategyFactory(NamedParameterJdbcOperations namedParameterJdbcOperations,
52+
BatchJdbcOperations batchJdbcOperations, Dialect dialect) {
53+
this(namedParameterJdbcOperations, dialect);
54+
}
55+
4656
/**
4757
* @param idValueSource the {@link IdValueSource} for the insert.
4858
* @param idColumn the identifier for the id, if an id is expected to be generated. May be {@code null}.
@@ -52,9 +62,9 @@ public InsertStrategyFactory(NamedParameterJdbcOperations namedParameterJdbcOper
5262
InsertStrategy insertStrategy(IdValueSource idValueSource, @Nullable SqlIdentifier idColumn) {
5363

5464
if (IdValueSource.GENERATED.equals(idValueSource)) {
55-
return new IdGeneratingInsertStrategy(dialect, namedParameterJdbcOperations, idColumn);
65+
return new IdGeneratingInsertStrategy(dialect, jdbcOperations, idColumn);
5666
}
57-
return new DefaultInsertStrategy(namedParameterJdbcOperations);
67+
return new DefaultInsertStrategy(jdbcOperations);
5868
}
5969

6070
/**
@@ -66,11 +76,10 @@ InsertStrategy insertStrategy(IdValueSource idValueSource, @Nullable SqlIdentifi
6676
BatchInsertStrategy batchInsertStrategy(IdValueSource idValueSource, @Nullable SqlIdentifier idColumn) {
6777

6878
if (IdValueSource.GENERATED.equals(idValueSource)) {
69-
return new IdGeneratingBatchInsertStrategy(
70-
new IdGeneratingInsertStrategy(dialect, namedParameterJdbcOperations, idColumn), dialect, batchJdbcOperations,
71-
idColumn);
79+
return new IdGeneratingBatchInsertStrategy(new IdGeneratingInsertStrategy(dialect, jdbcOperations, idColumn),
80+
dialect, jdbcOperations, idColumn);
7281
}
73-
return new DefaultBatchInsertStrategy(namedParameterJdbcOperations);
82+
return new DefaultBatchInsertStrategy(jdbcOperations);
7483
}
7584

7685
private static class DefaultInsertStrategy implements InsertStrategy {

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/mybatis/MyBatisDataAccessStrategy.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ public static DataAccessStrategy createCombinedAccessStrategy(RelationalMappingC
8989

9090
SqlGeneratorSource sqlGeneratorSource = new SqlGeneratorSource(context, converter, dialect);
9191
SqlParametersFactory sqlParametersFactory = new SqlParametersFactory(context, converter);
92-
InsertStrategyFactory insertStrategyFactory = new InsertStrategyFactory(operations,
93-
new BatchJdbcOperations(operations.getJdbcOperations()), dialect);
92+
InsertStrategyFactory insertStrategyFactory = new InsertStrategyFactory(operations, dialect);
9493

9594
DataAccessStrategy defaultDataAccessStrategy = new DataAccessStrategyFactory( //
9695
sqlGeneratorSource, //

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/AbstractJdbcConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ public DataAccessStrategy dataAccessStrategyBean(NamedParameterJdbcOperations op
209209
SqlGeneratorSource sqlGeneratorSource = new SqlGeneratorSource(context, jdbcConverter, dialect);
210210
DataAccessStrategyFactory factory = new DataAccessStrategyFactory(sqlGeneratorSource, jdbcConverter, operations,
211211
new SqlParametersFactory(context, jdbcConverter),
212-
new InsertStrategyFactory(operations, new BatchJdbcOperations(operations.getJdbcOperations()), dialect));
212+
new InsertStrategyFactory(operations, dialect));
213213

214214
return factory.create();
215215
}

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/JdbcRepositoryFactoryBean.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.springframework.beans.factory.annotation.Autowired;
2222
import org.springframework.context.ApplicationEventPublisher;
2323
import org.springframework.context.ApplicationEventPublisherAware;
24-
import org.springframework.data.jdbc.core.convert.BatchJdbcOperations;
2524
import org.springframework.data.jdbc.core.convert.DataAccessStrategy;
2625
import org.springframework.data.jdbc.core.convert.DataAccessStrategyFactory;
2726
import org.springframework.data.jdbc.core.convert.InsertStrategyFactory;
@@ -179,8 +178,7 @@ public void afterPropertiesSet() {
179178
SqlGeneratorSource sqlGeneratorSource = new SqlGeneratorSource(this.mappingContext, this.converter,
180179
this.dialect);
181180
SqlParametersFactory sqlParametersFactory = new SqlParametersFactory(this.mappingContext, this.converter);
182-
InsertStrategyFactory insertStrategyFactory = new InsertStrategyFactory(this.operations,
183-
new BatchJdbcOperations(this.operations.getJdbcOperations()), this.dialect);
181+
InsertStrategyFactory insertStrategyFactory = new InsertStrategyFactory(this.operations, this.dialect);
184182

185183
DataAccessStrategyFactory factory = new DataAccessStrategyFactory(sqlGeneratorSource, this.converter,
186184
this.operations, sqlParametersFactory, insertStrategyFactory);

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/IdGeneratingBatchInsertStrategyTest.java

+16-15
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.springframework.data.relational.core.dialect.LockClause;
3030
import org.springframework.data.relational.core.sql.IdentifierProcessing;
3131
import org.springframework.data.relational.core.sql.SqlIdentifier;
32+
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
3233
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
3334
import org.springframework.jdbc.support.KeyHolder;
3435

@@ -41,7 +42,7 @@ class IdGeneratingBatchInsertStrategyTest {
4142

4243
SqlIdentifier idColumn = SqlIdentifier.quoted("id");
4344
IdentifierProcessing identifierProcessing = IdentifierProcessing.ANSI;
44-
BatchJdbcOperations batchJdbcOperations = mock(BatchJdbcOperations.class);
45+
NamedParameterJdbcOperations jdbcOperations = mock(NamedParameterJdbcOperations.class);
4546
InsertStrategy insertStrategy = mock(InsertStrategy.class);
4647
String sql = "some sql";
4748
SqlParameterSource[] sqlParameterSources = new SqlParameterSource[] { new SqlIdentifierParameterSource() };
@@ -50,7 +51,7 @@ class IdGeneratingBatchInsertStrategyTest {
5051
void insertsSequentially_whenIdGenerationForBatchOperationsNotSupported() {
5152

5253
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
53-
createDialect(identifierProcessing, true, false), batchJdbcOperations, idColumn);
54+
createDialect(identifierProcessing, true, false), jdbcOperations, idColumn);
5455

5556
SqlIdentifierParameterSource sqlParameterSource1 = new SqlIdentifierParameterSource();
5657
sqlParameterSource1.addValue(SqlIdentifier.quoted("property1"), "value1");
@@ -72,41 +73,41 @@ void insertsSequentially_whenIdGenerationForBatchOperationsNotSupported() {
7273
void insertsWithKeyHolderAndKeyColumnNames_whenDriverRequiresKeyColumnNames() {
7374

7475
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
75-
createDialect(identifierProcessing, true, true), batchJdbcOperations, idColumn);
76+
createDialect(identifierProcessing, true, true), jdbcOperations, idColumn);
7677

7778
batchInsertStrategy.execute(sql, sqlParameterSources);
7879

79-
verify(batchJdbcOperations).batchUpdate(eq(sql), eq(sqlParameterSources), any(KeyHolder.class),
80+
verify(jdbcOperations).batchUpdate(eq(sql), eq(sqlParameterSources), any(KeyHolder.class),
8081
eq(new String[] { idColumn.getReference() }));
8182
}
8283

8384
@Test
8485
void insertsWithKeyHolder_whenDriverRequiresKeyColumnNames_butIdColumnIsNull() {
8586

8687
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
87-
createDialect(identifierProcessing, true, true), batchJdbcOperations, null);
88+
createDialect(identifierProcessing, true, true), jdbcOperations, null);
8889

8990
batchInsertStrategy.execute(sql, sqlParameterSources);
9091

91-
verify(batchJdbcOperations).batchUpdate(eq(sql), eq(sqlParameterSources), any(KeyHolder.class));
92+
verify(jdbcOperations).batchUpdate(eq(sql), eq(sqlParameterSources), any(KeyHolder.class));
9293
}
9394

9495
@Test
9596
void insertsWithKeyHolder_whenDriverDoesNotRequireKeyColumnNames() {
9697

9798
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
98-
createDialect(identifierProcessing, false, true), batchJdbcOperations, idColumn);
99+
createDialect(identifierProcessing, false, true), jdbcOperations, idColumn);
99100

100101
batchInsertStrategy.execute(sql, sqlParameterSources);
101102

102-
verify(batchJdbcOperations).batchUpdate(eq(sql), eq(sqlParameterSources), any(KeyHolder.class));
103+
verify(jdbcOperations).batchUpdate(eq(sql), eq(sqlParameterSources), any(KeyHolder.class));
103104
}
104105

105106
@Test
106107
void insertsWithKeyHolder_returningKey_whenThereIsOnlyOne() {
107108

108109
Long idValue = 123L;
109-
when(batchJdbcOperations.batchUpdate(any(), any(), any())).thenAnswer(invocationOnMock -> {
110+
when(jdbcOperations.batchUpdate(any(), any(), any())).thenAnswer(invocationOnMock -> {
110111

111112
KeyHolder keyHolder = invocationOnMock.getArgument(2);
112113
HashMap<String, Object> keys = new HashMap<>();
@@ -115,7 +116,7 @@ void insertsWithKeyHolder_returningKey_whenThereIsOnlyOne() {
115116
return null;
116117
});
117118
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
118-
createDialect(identifierProcessing, false, true), batchJdbcOperations, idColumn);
119+
createDialect(identifierProcessing, false, true), jdbcOperations, idColumn);
119120

120121
Object[] ids = batchInsertStrategy.execute(sql, sqlParameterSources);
121122

@@ -126,7 +127,7 @@ void insertsWithKeyHolder_returningKey_whenThereIsOnlyOne() {
126127
void insertsWithKeyHolder_returningKeyMatchingIdColumn_whenKeyHolderContainsMultipleKeysPerRecord() {
127128

128129
Long idValue = 123L;
129-
when(batchJdbcOperations.batchUpdate(any(), any(), any())).thenAnswer(invocationOnMock -> {
130+
when(jdbcOperations.batchUpdate(any(), any(), any())).thenAnswer(invocationOnMock -> {
130131

131132
KeyHolder keyHolder = invocationOnMock.getArgument(2);
132133
HashMap<String, Object> keys = new HashMap<>();
@@ -136,7 +137,7 @@ void insertsWithKeyHolder_returningKeyMatchingIdColumn_whenKeyHolderContainsMult
136137
return null;
137138
});
138139
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
139-
createDialect(identifierProcessing, false, true), batchJdbcOperations, idColumn);
140+
createDialect(identifierProcessing, false, true), jdbcOperations, idColumn);
140141

141142
Object[] ids = batchInsertStrategy.execute(sql, sqlParameterSources);
142143

@@ -147,7 +148,7 @@ void insertsWithKeyHolder_returningKeyMatchingIdColumn_whenKeyHolderContainsMult
147148
void insertsWithKeyHolder_returningNull__whenKeyHolderContainsMultipleKeysPerRecord_butIdColumnIsNull() {
148149

149150
Long idValue = 123L;
150-
when(batchJdbcOperations.batchUpdate(any(), any(), any())).thenAnswer(invocationOnMock -> {
151+
when(jdbcOperations.batchUpdate(any(), any(), any())).thenAnswer(invocationOnMock -> {
151152

152153
KeyHolder keyHolder = invocationOnMock.getArgument(2);
153154
HashMap<String, Object> keys = new HashMap<>();
@@ -157,7 +158,7 @@ void insertsWithKeyHolder_returningNull__whenKeyHolderContainsMultipleKeysPerRec
157158
return null;
158159
});
159160
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
160-
createDialect(identifierProcessing, false, true), batchJdbcOperations, null);
161+
createDialect(identifierProcessing, false, true), jdbcOperations, null);
161162

162163
Object[] ids = batchInsertStrategy.execute(sql, sqlParameterSources);
163164

@@ -169,7 +170,7 @@ void insertsWithKeyHolder_returningNull__whenKeyHolderContainsMultipleKeysPerRec
169170
void insertsWithKeyHolder_returningNull_whenKeyHolderHasNoKeys() {
170171

171172
BatchInsertStrategy batchInsertStrategy = new IdGeneratingBatchInsertStrategy(insertStrategy,
172-
createDialect(identifierProcessing, false, true), batchJdbcOperations, idColumn);
173+
createDialect(identifierProcessing, false, true), jdbcOperations, idColumn);
173174

174175
Object[] ids = batchInsertStrategy.execute(sql, sqlParameterSources);
175176

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/InsertStrategyFactoryTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@
3232
class InsertStrategyFactoryTest {
3333

3434
NamedParameterJdbcOperations namedParameterJdbcOperations = mock(NamedParameterJdbcOperations.class);
35-
BatchJdbcOperations batchJdbcOperations = mock(BatchJdbcOperations.class);
3635
InsertStrategyFactory insertStrategyFactory = new InsertStrategyFactory(namedParameterJdbcOperations,
37-
batchJdbcOperations, AnsiDialect.INSTANCE);
36+
AnsiDialect.INSTANCE);
3837

3938
String sql = "some sql";
4039
SqlParameterSource sqlParameterSource = new SqlIdentifierParameterSource();

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/SimpleJdbcRepositoryEventsUnitTests.java

+27-18
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@
1515
*/
1616
package org.springframework.data.jdbc.repository;
1717

18+
import static java.util.Arrays.*;
19+
import static org.assertj.core.api.Assertions.*;
20+
import static org.assertj.core.groups.Tuple.tuple;
21+
import static org.mockito.ArgumentMatchers.*;
22+
import static org.mockito.Mockito.*;
23+
24+
import java.util.ArrayList;
25+
import java.util.HashMap;
26+
import java.util.List;
27+
1828
import org.junit.jupiter.api.BeforeEach;
1929
import org.junit.jupiter.api.Test;
2030
import org.mockito.stubbing.Answer;
@@ -23,7 +33,15 @@
2333
import org.springframework.data.domain.PageRequest;
2434
import org.springframework.data.domain.Pageable;
2535
import org.springframework.data.domain.Sort;
26-
import org.springframework.data.jdbc.core.convert.*;
36+
import org.springframework.data.jdbc.core.convert.BasicJdbcConverter;
37+
import org.springframework.data.jdbc.core.convert.DefaultDataAccessStrategy;
38+
import org.springframework.data.jdbc.core.convert.DefaultJdbcTypeFactory;
39+
import org.springframework.data.jdbc.core.convert.DelegatingDataAccessStrategy;
40+
import org.springframework.data.jdbc.core.convert.InsertStrategyFactory;
41+
import org.springframework.data.jdbc.core.convert.JdbcConverter;
42+
import org.springframework.data.jdbc.core.convert.JdbcCustomConversions;
43+
import org.springframework.data.jdbc.core.convert.SqlGeneratorSource;
44+
import org.springframework.data.jdbc.core.convert.SqlParametersFactory;
2745
import org.springframework.data.jdbc.core.mapping.JdbcMappingContext;
2846
import org.springframework.data.jdbc.repository.support.JdbcRepositoryFactory;
2947
import org.springframework.data.jdbc.repository.support.SimpleJdbcRepository;
@@ -48,16 +66,6 @@
4866
import org.springframework.jdbc.support.KeyHolder;
4967
import org.springframework.lang.Nullable;
5068

51-
import java.util.ArrayList;
52-
import java.util.HashMap;
53-
import java.util.List;
54-
55-
import static java.util.Arrays.*;
56-
import static org.assertj.core.api.Assertions.*;
57-
import static org.assertj.core.groups.Tuple.tuple;
58-
import static org.mockito.ArgumentMatchers.*;
59-
import static org.mockito.Mockito.*;
60-
6169
/**
6270
* Unit tests for application events via {@link SimpleJdbcRepository}.
6371
*
@@ -90,8 +98,7 @@ void before() {
9098
new DefaultJdbcTypeFactory(operations.getJdbcOperations()), dialect.getIdentifierProcessing());
9199
SqlGeneratorSource generatorSource = new SqlGeneratorSource(context, converter, dialect);
92100
SqlParametersFactory sqlParametersFactory = new SqlParametersFactory(context, converter);
93-
InsertStrategyFactory insertStrategyFactory = new InsertStrategyFactory(operations,
94-
new BatchJdbcOperations(operations.getJdbcOperations()), dialect);
101+
InsertStrategyFactory insertStrategyFactory = new InsertStrategyFactory(operations, dialect);
95102

96103
this.dataAccessStrategy = spy(new DefaultDataAccessStrategy(generatorSource, context, converter, operations,
97104
sqlParametersFactory, insertStrategyFactory));
@@ -299,8 +306,7 @@ interface DummyEntityRepository
299306
extends CrudRepository<DummyEntity, Long>, PagingAndSortingRepository<DummyEntity, Long> {}
300307

301308
static final class DummyEntity {
302-
@Id
303-
private final Long id;
309+
@Id private final Long id;
304310

305311
public DummyEntity(Long id) {
306312
this.id = id;
@@ -311,12 +317,15 @@ public Long getId() {
311317
}
312318

313319
public boolean equals(final Object o) {
314-
if (o == this) return true;
315-
if (!(o instanceof DummyEntity)) return false;
320+
if (o == this)
321+
return true;
322+
if (!(o instanceof DummyEntity))
323+
return false;
316324
final DummyEntity other = (DummyEntity) o;
317325
final Object this$id = this.getId();
318326
final Object other$id = other.getId();
319-
if (this$id == null ? other$id != null : !this$id.equals(other$id)) return false;
327+
if (this$id == null ? other$id != null : !this$id.equals(other$id))
328+
return false;
320329
return true;
321330
}
322331

0 commit comments

Comments
 (0)