mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-23 03:22:59 +00:00
FIX: no update with @OrderColumn on treeDepth > 1 and avoid needless updates
This commit is contained in:
@@ -18,6 +18,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import static io.ebeaninternal.server.persist.DmlUtil.isNullOrZero;
|
||||
@@ -108,7 +109,7 @@ public class SaveManyBeans extends SaveManyBase {
|
||||
BeanProperty orderColumn = null;
|
||||
boolean hasOrderColumn = many.hasOrderColumn();
|
||||
if (hasOrderColumn) {
|
||||
if (!insertedParent && canSkipForOrderColumn()) {
|
||||
if (!insertedParent && canSkipForOrderColumn() && saveRecurseSkippable) {
|
||||
return;
|
||||
}
|
||||
orderColumn = targetDescriptor.getOrderColumn();
|
||||
@@ -157,7 +158,7 @@ public class SaveManyBeans extends SaveManyBase {
|
||||
if (many.hasJoinTable()) {
|
||||
skipSavingThisBean = targetDescriptor.isReference(ebi);
|
||||
} else {
|
||||
if (orderColumn != null) {
|
||||
if (orderColumn != null && !Objects.equals(sortOrder, orderColumn.getValue(detail))) {
|
||||
orderColumn.setValue(detail, sortOrder);
|
||||
ebi.setDirty(true);
|
||||
}
|
||||
|
||||
@@ -85,11 +85,10 @@ public class TestOrderedList extends BaseTestCase {
|
||||
Ebean.save(fresh);
|
||||
|
||||
sql = LoggedSqlCollector.current();
|
||||
assertThat(sql).hasSize(8);
|
||||
assertSql(sql.get(0)).contains("update om_ordered_master set name=?, version=?");
|
||||
assertSql(sql.get(1)).contains("update om_ordered_detail set version=?, sort_order=? where id=? and version=?");
|
||||
assertThat(sql.get(3)).contains("update om_ordered_detail set name=?, version=?, sort_order=? where id=? and version=?");
|
||||
|
||||
assertThat(sql).hasSize(3);
|
||||
assertSql(sql.get(0)).contains("update om_ordered_master set name=?, version=? where id=? and version=?; -- bind(m1-mod3");
|
||||
assertSql(sql.get(1)).contains("update om_ordered_detail set name=?, version=?, sort_order=? where id=? and version=?");
|
||||
assertThat(sql.get(2)).contains("bind(was 1,3,2,");
|
||||
|
||||
Ebean.delete(fresh);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user