mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#485 - @SoftDelete with join to nullable relation (optional @ManyToOne for example) ... will incorrectly filter out row from result when FK value is null.
This commit is contained in:
@@ -2,7 +2,6 @@ package com.avaje.tests.model.softdelete;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.ManyToMany;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.OneToMany;
|
||||
import java.util.List;
|
||||
@@ -10,7 +9,7 @@ import java.util.List;
|
||||
@Entity
|
||||
public class ESoftDelMid extends BaseSoftDelete {
|
||||
|
||||
@ManyToOne(optional = false)
|
||||
@ManyToOne
|
||||
ESoftDelTop top;
|
||||
|
||||
String mid;
|
||||
|
||||
@@ -135,8 +135,8 @@ public class TestSoftDeleteBasic extends BaseTestCase {
|
||||
String generatedSql = query1.getGeneratedSql();
|
||||
|
||||
// first statement is a single bulk update of the children with SoftDelete
|
||||
assertThat(generatedSql).contains("t0.deleted=");
|
||||
assertThat(generatedSql).contains("t1.deleted=");
|
||||
assertThat(generatedSql).contains("coalesce(t0.deleted,");
|
||||
assertThat(generatedSql).contains("coalesce(t1.deleted,");
|
||||
assertThat(fetch1.get(0).getChildren()).hasSize(2);
|
||||
|
||||
assertThat(fetch1.get(0).getNosdChildren()).hasSize(2);
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.avaje.tests.softdelete;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.tests.model.softdelete.ESoftDelMid;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.StrictAssertions.assertThat;
|
||||
|
||||
public class TestSoftDeleteOptionalRelationship extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testFindWhenNullRelationship() {
|
||||
|
||||
ESoftDelMid mid1 = new ESoftDelMid(null, "mid1");
|
||||
Ebean.save(mid1);
|
||||
|
||||
ESoftDelMid bean = Ebean.find(ESoftDelMid.class)
|
||||
.setId(mid1.getId())
|
||||
.fetch("top")
|
||||
.findUnique();
|
||||
|
||||
assertThat(bean).isNotNull();
|
||||
assertThat(bean.getTop()).isNull();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user