diff --git a/ebean-api/src/main/java/io/ebean/Pairs.java b/ebean-api/src/main/java/io/ebean/Pairs.java
index bd5ee5137..a6847bf1e 100644
--- a/ebean-api/src/main/java/io/ebean/Pairs.java
+++ b/ebean-api/src/main/java/io/ebean/Pairs.java
@@ -3,6 +3,7 @@ package io.ebean;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
/**
* Holds a list of value object pairs.
@@ -62,15 +63,14 @@ import java.util.List;
*
* {@code sql
*
- * create index ix_name on table_name ((sku || '-' || code));
+ * create index ix_name on table_name (sku || '-' || code);
*
* }
*/
-public class Pairs {
+public final class Pairs {
private final String property0;
private final String property1;
-
private final List entries = new ArrayList<>();
/**
@@ -139,11 +139,19 @@ public class Pairs {
/**
* Set the separator character used with DB varchar concatenation to combine the 2 values.
*/
- public Pairs setConcatSeparator(String concatSeparator) {
+ public Pairs concatSeparator(String concatSeparator) {
this.concatSeparator = concatSeparator;
return this;
}
+ /**
+ * Deprecated migrate to concatSeparator()
+ */
+ @Deprecated
+ public Pairs setConcatSeparator(String concatSeparator) {
+ return concatSeparator(concatSeparator);
+ }
+
/**
* Return a suffix used with DB varchar concatenation to combine the 2 values.
*/
@@ -154,11 +162,19 @@ public class Pairs {
/**
* Add a suffix used with DB varchar concatenation to combine the 2 values.
*/
- public Pairs setConcatSuffix(String concatSuffix) {
+ public Pairs concatSuffix(String concatSuffix) {
this.concatSuffix = concatSuffix;
return this;
}
+ /**
+ * Deprecated migrate to concatSuffix()
+ */
+ @Deprecated
+ public Pairs setConcatSuffix(String concatSuffix) {
+ return concatSuffix(concatSuffix);
+ }
+
@Override
public String toString() {
return "p0:" + property0 + " p1:" + property1 + " entries:" + entries;
@@ -208,16 +224,13 @@ public class Pairs {
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
-
Entry that = (Entry) o;
return a.equals(that.a) && b.equals(that.b);
}
@Override
public int hashCode() {
- int result = a.hashCode();
- result = 92821 * result + b.hashCode();
- return result;
+ return Objects.hash(a, b);
}
}
}
diff --git a/ebean-api/src/main/java/io/ebean/config/QueryPlanCapture.java b/ebean-api/src/main/java/io/ebean/config/QueryPlanCapture.java
index 6f34097fe..13f0a1ed2 100644
--- a/ebean-api/src/main/java/io/ebean/config/QueryPlanCapture.java
+++ b/ebean-api/src/main/java/io/ebean/config/QueryPlanCapture.java
@@ -21,6 +21,14 @@ public class QueryPlanCapture {
/**
* Return the database the plans were captured for.
*/
+ public Database database() {
+ return database;
+ }
+
+ /**
+ * Deprecated migrate to database().
+ */
+ @Deprecated
public Database getDatabase() {
return database;
}
@@ -28,6 +36,14 @@ public class QueryPlanCapture {
/**
* Return the captured query plans.
*/
+ public List plans() {
+ return plans;
+ }
+
+ /**
+ * Deprecated migrate to plans().
+ */
+ @Deprecated
public List getPlans() {
return plans;
}
diff --git a/ebean-core/src/main/java/io/ebeaninternal/api/SpiQuery.java b/ebean-core/src/main/java/io/ebeaninternal/api/SpiQuery.java
index 5a6ae2217..3f2e97893 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/api/SpiQuery.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/api/SpiQuery.java
@@ -81,6 +81,11 @@ public interface SpiQuery extends Query, SpiQueryFetch, TxnProfileEventCod
*/
ID_LIST(FIND_ID_LIST, "findIds"),
+ /**
+ * Find exists.
+ */
+ EXISTS(FIND_EXISTS, "exists"),
+
/**
* Find single attribute.
*/
diff --git a/ebean-core/src/main/java/io/ebeaninternal/api/TxnProfileEventCodes.java b/ebean-core/src/main/java/io/ebeaninternal/api/TxnProfileEventCodes.java
index 231d38296..c4d1ea0be 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/api/TxnProfileEventCodes.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/api/TxnProfileEventCodes.java
@@ -26,6 +26,7 @@ public interface TxnProfileEventCodes {
String FIND_MANY = "fm";
String FIND_ITERATE = "fe";
String FIND_ID_LIST = "fi";
+ String FIND_EXISTS = "ex";
String FIND_ATTRIBUTE = "fa";
String FIND_COUNT = "fc";
String FIND_SUBQUERY = "fs";
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultQueryPlanListener.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultQueryPlanListener.java
index 5a6196230..f748e7f2b 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultQueryPlanListener.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultQueryPlanListener.java
@@ -15,8 +15,8 @@ final class DefaultQueryPlanListener implements QueryPlanListener {
@Override
public void process(QueryPlanCapture capture) {
// better to log this in JSON form?
- String dbName = capture.getDatabase().name();
- for (MetaQueryPlan plan : capture.getPlans()) {
+ String dbName = capture.database().name();
+ for (MetaQueryPlan plan : capture.plans()) {
log.info("queryPlan db:{} label:{} queryTimeMicros:{} loc:{} sql:{} bind:{} plan:{}",
dbName, plan.label(), plan.queryTimeMicros(), plan.profileLocation(),
plan.sql(), plan.bind(), plan.plan());
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java
index 0e293d37d..439f888a9 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java
@@ -388,6 +388,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
if (dbSchema != null) {
migrationRunner.setDefaultDbSchema(dbSchema);
}
+ migrationRunner.setName(config.getName());
migrationRunner.setPlatform(config.getDatabasePlatform().getPlatform().base().name().toLowerCase());
migrationRunner.loadProperties(config.getProperties());
migrationRunner.run(config.getDataSource());
@@ -1296,7 +1297,12 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
@Override
public boolean exists(Query ormQuery, Transaction transaction) {
Query ormQueryCopy = ormQuery.copy().setMaxRows(1);
- SpiOrmQueryRequest> request = createQueryRequest(Type.ID_LIST, ormQueryCopy, transaction);
+ SpiOrmQueryRequest> request = createQueryRequest(Type.EXISTS, ormQueryCopy, transaction);
+ List