Merge remote-tracking branch 'origin/one2many_setArraylist' into one2many_setArraylist

This commit is contained in:
Michal Buchtík
2023-02-05 09:28:11 +01:00
7 changed files with 68 additions and 20 deletions
@@ -1730,4 +1730,8 @@ public interface ExpressionList<T> {
*/
ExpressionList<T> endNot();
/**
* Clears the current expression list.
*/
ExpressionList<T> clear();
}
-18
View File
@@ -193,12 +193,6 @@
<!-- platforms -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-all</artifactId>
<version>13.11.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-clickhouse</artifactId>
@@ -223,12 +217,6 @@
<version>13.11.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-hsqldb</artifactId>
<version>13.11.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-mariadb</artifactId>
@@ -259,12 +247,6 @@
<version>13.11.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-sqlanywhere</artifactId>
<version>13.11.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-sqlite</artifactId>
@@ -1268,4 +1268,10 @@ public class DefaultExpressionList<T> implements SpiExpressionList<T> {
}
return null;
}
@Override
public ExpressionList<T> clear() {
list.clear();
return this;
}
}
@@ -1068,4 +1068,9 @@ final class JunctionExpression<T> implements SpiJunction<T>, SpiExpression, Expr
}
return null;
}
@Override
public ExpressionList<T> clear() {
return exprList.clear();
}
}
@@ -861,7 +861,7 @@ public final class DefaultPersister implements Persister {
SpiTransaction t = request.transaction();
EntityBean orphanForRemoval = request.importedOrphanForRemoval();
if (orphanForRemoval != null) {
delete(orphanForRemoval, request.transaction(), true);
delete(orphanForRemoval, request.transaction(), false);
}
// exported ones with cascade save
@@ -1079,7 +1079,7 @@ public final class DefaultPersister implements Persister {
private void deleteOrphan(PersistRequestBean<?> request, BeanPropertyAssocOne<?> prop) {
Object origValue = request.getOrigValue(prop);
if (origValue instanceof EntityBean) {
delete((EntityBean) origValue, request.transaction(), true);
delete((EntityBean) origValue, request.transaction(), false);
}
}
@@ -99,6 +99,14 @@ public class DefaultExpressionListTest extends BaseExpressionTest {
.isSameByBind(spi(exp().eq("a", 10).eq("b", 20)))).isFalse();
}
@Test
public void isSameWithClear() {
DefaultExpressionList<?> exp1 = spi(exp().eq("a", 10).eq("b", 20).clear().eq("c", 30));
DefaultExpressionList<?> exp2 = spi(exp().eq("c", 30));
same(exp1, exp2);
assertThat(exp1.isSameByBind(exp2)).isTrue();
}
@SuppressWarnings("unchecked")
@Test
void copy() {
@@ -0,0 +1,43 @@
package org.tests.o2m;
import io.ebean.DB;
import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import org.junit.jupiter.api.Test;
import org.tests.o2m.dm.GoodsEntity;
import org.tests.o2m.dm.WorkflowEntity;
import org.tests.o2m.dm.WorkflowOperationEntity;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class StatefulO2MSoftDelete extends BaseTestCase {
@Test
void statefulUpdateShouldntDelete() {
var bomGoods = new GoodsEntity();
DB.save(bomGoods);
var goods = new GoodsEntity();
var workflow = new WorkflowEntity();
var operation1 = new WorkflowOperationEntity();
operation1.setName("operation 1");
goods.setWorkflowEntity(workflow);
workflow.setOperations(List.of(operation1));
DB.save(goods);
LoggedSql.start();
// replace workflow entity
var goodsFromDB = DB.find(GoodsEntity.class, goods.getId());
goodsFromDB.setWorkflowEntity(new WorkflowEntity());
DB.update(goodsFromDB);
var updateSql = LoggedSql.stop();
updateSql.forEach(sql -> assertThat(sql).doesNotContain("delete from workflow_entity"));
if (isH2()) {
assertThat(updateSql.get(4)).contains("update workflow_operation_entity set deleted=true where workflow_id = ?");
assertThat(updateSql.get(6)).contains("update workflow_entity set when_modified=?, deleted=? where id=?");
}
}
}