mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-11-12 22:41:35 +00:00
#2444 - exists and findCount queries produce NPE on entity defined with IdClass - SqlTreeProperties.add(SqlTreeProperties.java:38)
This commit is contained in:
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));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user