mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-13 21:01:01 +08:00
Fix end position handling
This commit is contained in:
parent
9c4a4415db
commit
fbd75c840e
@ -891,7 +891,11 @@ public class SQLTemplates extends Templates {
|
||||
*/
|
||||
public void serializeInsert(QueryMetadata metadata, RelationalPath<?> entity,
|
||||
List<SQLInsertBatch> batches, SQLSerializer context) {
|
||||
context.serializeForInsert(metadata, entity, batches);
|
||||
context.serializeForInsert(metadata, entity, batches);
|
||||
|
||||
if (!metadata.getFlags().isEmpty()) {
|
||||
context.serialize(Position.END, metadata.getFlags());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -461,6 +461,10 @@ public class SQLInsertClause extends AbstractSQLClause<SQLInsertClause> implemen
|
||||
SQLSerializer serializer = createSerializer();
|
||||
serializer.serializeInsert(metadata, entity, columns, values, subQuery);
|
||||
return ImmutableList.of(createBindings(metadata, serializer));
|
||||
} else if (batchToBulk) {
|
||||
SQLSerializer serializer = createSerializer();
|
||||
serializer.serializeInsert(metadata, entity, batches);
|
||||
return ImmutableList.of(createBindings(metadata, serializer));
|
||||
} else {
|
||||
ImmutableList.Builder<SQLBindings> builder = ImmutableList.builder();
|
||||
for (SQLInsertBatch batch : batches) {
|
||||
@ -525,7 +529,11 @@ public class SQLInsertClause extends AbstractSQLClause<SQLInsertClause> implemen
|
||||
@Override
|
||||
public String toString() {
|
||||
SQLSerializer serializer = createSerializer();
|
||||
serializer.serializeInsert(metadata, entity, columns, values, subQuery);
|
||||
if (!batches.isEmpty() && batchToBulk) {
|
||||
serializer.serializeInsert(metadata, entity, batches);
|
||||
} else {
|
||||
serializer.serializeInsert(metadata, entity, columns, values, subQuery);
|
||||
}
|
||||
return serializer.toString();
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import static org.junit.Assert.assertEquals;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.querydsl.core.QueryFlag;
|
||||
import com.querydsl.sql.KeyAccessorsTest.QEmployee;
|
||||
import com.querydsl.sql.SQLBindings;
|
||||
import com.querydsl.sql.SQLTemplates;
|
||||
@ -30,6 +31,21 @@ public class SQLInsertClauseTest {
|
||||
assertEquals(ImmutableList.of(1), sql.getBindings());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bulk() {
|
||||
QEmployee emp1 = new QEmployee("emp1");
|
||||
SQLInsertClause insert = new SQLInsertClause(null, SQLTemplates.DEFAULT, emp1);
|
||||
insert.set(emp1.id, 1);
|
||||
insert.addBatch();
|
||||
insert.set(emp1.id, 2);
|
||||
insert.addBatch();
|
||||
insert.addFlag(QueryFlag.Position.END, " on duplicate key ignore");
|
||||
insert.setBatchToBulk(true);
|
||||
assertEquals("insert into EMPLOYEE (ID)\n" +
|
||||
"values (?), (?) on duplicate key ignore", insert.getSQL().get(0).getSQL());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSQLWithPreservedColumnOrder() {
|
||||
com.querydsl.sql.domain.QEmployee emp1 = new com.querydsl.sql.domain.QEmployee("emp1");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user