#2444 - exists and findCount queries produce NPE on entity defined with IdClass - SqlTreeProperties.add(SqlTreeProperties.java:38)

This commit is contained in:
Rob Bygrave committed 2021-11-26 21:10:31 +13:00
1 parent 83fbfd1b2a
commit 8a25a7b6ec
4 files changed
+80 -15

No files matched your search

@@ -6,18 +6,19 @@ import io.ebean.Transaction;
import io.ebean.test.LoggedSql;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
public class TestIdClassScalar extends BaseTestCase {
class TestIdClassScalar extends BaseTestCase {
private BUser user = new BUser("Fiona");
private BSite site = new BSite("avaje.io");
private final BUser user = new BUser("Fiona");
private final BSite site = new BSite("avaje.io");
@Test
public void testBEmbId_equalsHashcode() {
void testBEmbId_equalsHashcode() {
BEmbId a = new BEmbId(UUID.randomUUID(), UUID.randomUUID());
BEmbId b = new BEmbId(a.getSiteId(), a.getUserId());
@@ -35,13 +36,11 @@ public class TestIdClassScalar extends BaseTestCase {
assertThat(a).isNotEqualTo(d);
assertThat(a.hashCode()).isNotEqualTo(d.hashCode());
assertThat(a.hashCode()).isEqualTo(a.otherHash());
}
@Test
public void fetchMany() {
void fetchMany() {
UUID siteId = UUID.randomUUID();
UUID userId = UUID.randomUUID();
@@ -59,7 +58,7 @@ public class TestIdClassScalar extends BaseTestCase {
}
@Test
public void insertBatch() {
void insertBatch() {
UUID siteId = UUID.randomUUID();
UUID userId = UUID.randomUUID();
@@ -81,11 +80,9 @@ public class TestIdClassScalar extends BaseTestCase {
}
@Test
public void test() {
void test() {
DB.save(user);
DB.save(site);
insertUpdateBridgeD(user, site);
insertUpdateBridgeE(user, site);
}
@@ -94,7 +91,6 @@ public class TestIdClassScalar extends BaseTestCase {
* Test where matching by db column naming convention.
*/
private void insertUpdateBridgeD(BUser user, BSite site) {
LoggedSql.start();
BSiteUserD access = new BSiteUserD(BAccessLevel.ONE, site.id, user.id);
@@ -139,7 +135,6 @@ public class TestIdClassScalar extends BaseTestCase {
* Test where matching by db column naming convention.
*/
private void insertUpdateBridgeE(BUser user, BSite site) {
LoggedSql.start();
BSiteUserE access = new BSiteUserE(BAccessLevel.ONE, site, user);
@@ -181,4 +176,47 @@ public class TestIdClassScalar extends BaseTestCase {
assertSql(sql.get(1)).contains("update bsite_user_e set access_level=? where site_id=? and user_id=?");
}
@Test
void idClass_existsQuery() {
BUser user = new BUser("JunkUser2");
BSite site = new BSite("JunkSite2");
BSiteUserE access = new BSiteUserE(BAccessLevel.ONE, site, user);
DB.save(user);
DB.save(site);
DB.save(access);
boolean exists = DB.find(BSiteUserE.class)
.where().eq("user.id", user.id)
.exists();
assertThat(exists).isTrue();
assertThat(DB.find(BSiteUserE.class).where().eq("user.id", user.id).findCount()).isEqualTo(1);
DB.delete(access);
DB.deleteAll(Arrays.asList(user, site));
}
@Test
void idClass_existsQuery_scalarImportedProperties() {
BUser user = new BUser("JunkUser3");
BSite site = new BSite("JunkSite3");
DB.save(user);
DB.save(site);
BSiteUserD access = new BSiteUserD(BAccessLevel.ONE, site.id, user.id);
DB.save(access);
boolean exists = DB.find(BSiteUserD.class)
.where().eq("userId", user.id)
.exists();
assertThat(exists).isTrue();
assertThat(DB.find(BSiteUserD.class).where().eq("userId", user.id).findCount()).isEqualTo(1);
DB.delete(access);
DB.deleteAll(Arrays.asList(user, site));
}
}