mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-24 08:25:50 +00:00
Merge branch 'master' into feature/StdExpressions
This commit is contained in:
@@ -190,6 +190,92 @@
|
||||
<artifactId>ebean-redis</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<!-- platforms -->
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-all</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-clickhouse</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-db2</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-h2</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-hana</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-hsqldb</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-mariadb</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-mysql</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-nuodb</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-oracle</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgres</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-sqlanywhere</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-sqlite</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-sqlserver</artifactId>
|
||||
<version>13.10.2-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -115,88 +115,88 @@ public class DataBind implements DataBinder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setString(String s) throws SQLException {
|
||||
pstmt.setString(++pos, s);
|
||||
public void setString(String value) throws SQLException {
|
||||
pstmt.setString(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setInt(int i) throws SQLException {
|
||||
pstmt.setInt(++pos, i);
|
||||
public final void setInt(int value) throws SQLException {
|
||||
pstmt.setInt(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setLong(long i) throws SQLException {
|
||||
pstmt.setLong(++pos, i);
|
||||
public final void setLong(long value) throws SQLException {
|
||||
pstmt.setLong(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setShort(short i) throws SQLException {
|
||||
pstmt.setShort(++pos, i);
|
||||
public final void setShort(short value) throws SQLException {
|
||||
pstmt.setShort(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setFloat(float i) throws SQLException {
|
||||
pstmt.setFloat(++pos, i);
|
||||
public final void setFloat(float value) throws SQLException {
|
||||
pstmt.setFloat(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setDouble(double i) throws SQLException {
|
||||
pstmt.setDouble(++pos, i);
|
||||
public final void setDouble(double value) throws SQLException {
|
||||
pstmt.setDouble(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setBigDecimal(BigDecimal v) throws SQLException {
|
||||
pstmt.setBigDecimal(++pos, v);
|
||||
public final void setBigDecimal(BigDecimal value) throws SQLException {
|
||||
pstmt.setBigDecimal(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setDate(java.sql.Date v) throws SQLException {
|
||||
public final void setDate(java.sql.Date value) throws SQLException {
|
||||
Calendar timeZone = dataTimeZone.getTimeComponentTimeZone();
|
||||
if (timeZone != null) {
|
||||
pstmt.setDate(++pos, v, timeZone);
|
||||
pstmt.setDate(++pos, value, timeZone);
|
||||
} else {
|
||||
pstmt.setDate(++pos, v);
|
||||
pstmt.setDate(++pos, value);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setTimestamp(Timestamp v) throws SQLException {
|
||||
public final void setTimestamp(Timestamp value) throws SQLException {
|
||||
Calendar timeZone = dataTimeZone.getTimeZone();
|
||||
if (timeZone != null) {
|
||||
pstmt.setTimestamp(++pos, v, timeZone);
|
||||
pstmt.setTimestamp(++pos, value, timeZone);
|
||||
} else {
|
||||
pstmt.setTimestamp(++pos, v);
|
||||
pstmt.setTimestamp(++pos, value);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setTime(Time v) throws SQLException {
|
||||
public final void setTime(Time value) throws SQLException {
|
||||
Calendar timeZone = dataTimeZone.getTimeComponentTimeZone();
|
||||
if (timeZone != null) {
|
||||
pstmt.setTime(++pos, v, timeZone);
|
||||
pstmt.setTime(++pos, value, timeZone);
|
||||
} else {
|
||||
pstmt.setTime(++pos, v);
|
||||
pstmt.setTime(++pos, value);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoolean(boolean v) throws SQLException {
|
||||
pstmt.setBoolean(++pos, v);
|
||||
public void setBoolean(boolean value) throws SQLException {
|
||||
pstmt.setBoolean(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBytes(byte[] v) throws SQLException {
|
||||
pstmt.setBytes(++pos, v);
|
||||
public void setBytes(byte[] value) throws SQLException {
|
||||
pstmt.setBytes(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setByte(byte v) throws SQLException {
|
||||
pstmt.setByte(++pos, v);
|
||||
public void setByte(byte value) throws SQLException {
|
||||
pstmt.setByte(++pos, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChar(char v) throws SQLException {
|
||||
pstmt.setString(++pos, String.valueOf(v));
|
||||
public void setChar(char value) throws SQLException {
|
||||
pstmt.setString(++pos, String.valueOf(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -215,20 +215,17 @@ public class DataBind implements DataBinder {
|
||||
|
||||
@Override
|
||||
public void setBlob(byte[] bytes) throws SQLException {
|
||||
ByteArrayInputStream is = new ByteArrayInputStream(bytes);
|
||||
pstmt.setBinaryStream(++pos, is, bytes.length);
|
||||
pstmt.setBinaryStream(++pos, new ByteArrayInputStream(bytes), bytes.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClob(String content) throws SQLException {
|
||||
Reader reader = new StringReader(content);
|
||||
pstmt.setCharacterStream(++pos, reader, content.length());
|
||||
pstmt.setCharacterStream(++pos, new StringReader(content), content.length());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setArray(String arrayType, Object[] elements) throws SQLException {
|
||||
Array array = connection.createArrayOf(arrayType, elements);
|
||||
pstmt.setArray(++pos, array);
|
||||
pstmt.setArray(++pos, connection.createArrayOf(arrayType, elements));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+32
-32
@@ -33,87 +33,87 @@ public final class BindCaptureStatement extends BindCaptureStatementBase impleme
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoolean(int parameterIndex, boolean x) {
|
||||
capture.add(new BindCaptureTypes.Boolean(parameterIndex, x));
|
||||
public void setBoolean(int parameterIndex, boolean value) {
|
||||
capture.add(new BindCaptureTypes.Boolean(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setByte(int parameterIndex, byte x) {
|
||||
capture.add(new BindCaptureTypes.Byte(parameterIndex, x));
|
||||
public void setByte(int parameterIndex, byte value) {
|
||||
capture.add(new BindCaptureTypes.Byte(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setShort(int parameterIndex, short x) {
|
||||
capture.add(new BindCaptureTypes.TShort(parameterIndex, x));
|
||||
public void setShort(int parameterIndex, short value) {
|
||||
capture.add(new BindCaptureTypes.TShort(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInt(int parameterIndex, int x) {
|
||||
capture.add(new BindCaptureTypes.TInt(parameterIndex, x));
|
||||
public void setInt(int parameterIndex, int value) {
|
||||
capture.add(new BindCaptureTypes.TInt(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLong(int parameterIndex, long x) {
|
||||
capture.add(new BindCaptureTypes.TLong(parameterIndex, x));
|
||||
public void setLong(int parameterIndex, long value) {
|
||||
capture.add(new BindCaptureTypes.TLong(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFloat(int parameterIndex, float x) {
|
||||
capture.add(new BindCaptureTypes.TFloat(parameterIndex, x));
|
||||
public void setFloat(int parameterIndex, float value) {
|
||||
capture.add(new BindCaptureTypes.TFloat(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDouble(int parameterIndex, double x) {
|
||||
capture.add(new BindCaptureTypes.TDouble(parameterIndex, x));
|
||||
public void setDouble(int parameterIndex, double value) {
|
||||
capture.add(new BindCaptureTypes.TDouble(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBigDecimal(int parameterIndex, BigDecimal x) {
|
||||
capture.add(new BindCaptureTypes.TBigDecimal(parameterIndex, x));
|
||||
public void setBigDecimal(int parameterIndex, BigDecimal value) {
|
||||
capture.add(new BindCaptureTypes.TBigDecimal(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setString(int parameterIndex, String x) {
|
||||
capture.add(new BindCaptureTypes.TString(parameterIndex, x));
|
||||
public void setString(int parameterIndex, String value) {
|
||||
capture.add(new BindCaptureTypes.TString(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBytes(int parameterIndex, byte[] x) {
|
||||
capture.add(new BindCaptureTypes.Bytes(parameterIndex, x));
|
||||
public void setBytes(int parameterIndex, byte[] value) {
|
||||
capture.add(new BindCaptureTypes.Bytes(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDate(int parameterIndex, Date x) {
|
||||
capture.add(new BindCaptureTypes.TDate(parameterIndex, x));
|
||||
public void setDate(int parameterIndex, Date value) {
|
||||
capture.add(new BindCaptureTypes.TDate(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTime(int parameterIndex, Time x) {
|
||||
capture.add(new BindCaptureTypes.TTime(parameterIndex, x));
|
||||
public void setTime(int parameterIndex, Time value) {
|
||||
capture.add(new BindCaptureTypes.TTime(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(int parameterIndex, Timestamp x) {
|
||||
capture.add(new BindCaptureTypes.TTimestamp(parameterIndex, x, null));
|
||||
public void setTimestamp(int parameterIndex, Timestamp value) {
|
||||
capture.add(new BindCaptureTypes.TTimestamp(parameterIndex, value, null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) {
|
||||
capture.add(new BindCaptureTypes.TTimestamp(parameterIndex, x, cal));
|
||||
public void setTimestamp(int parameterIndex, Timestamp value, Calendar cal) {
|
||||
capture.add(new BindCaptureTypes.TTimestamp(parameterIndex, value, cal));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setObject(int parameterIndex, Object x) {
|
||||
capture.add(new BindCaptureTypes.TObject(parameterIndex, x));
|
||||
public void setObject(int parameterIndex, Object value) {
|
||||
capture.add(new BindCaptureTypes.TObject(parameterIndex, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(int parameterIndex, InputStream x, int length) {
|
||||
public void setBinaryStream(int parameterIndex, InputStream value, int length) {
|
||||
capture.add(new BindCaptureTypes.BinaryStream(parameterIndex));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(int parameterIndex, Reader reader, int length) {
|
||||
public void setCharacterStream(int parameterIndex, Reader value, int length) {
|
||||
capture.add(new BindCaptureTypes.CharacterStream(parameterIndex));
|
||||
}
|
||||
|
||||
|
||||
@@ -14,17 +14,13 @@ import java.util.*;
|
||||
|
||||
public final class InExpression extends AbstractExpression implements IdInCommon {
|
||||
|
||||
private final boolean not;
|
||||
|
||||
/**
|
||||
* Set to true when adding "1=1" predicate (due to null or empty sourceValues).
|
||||
*/
|
||||
private final boolean empty;
|
||||
|
||||
private final boolean not;
|
||||
private final Collection<?> sourceValues;
|
||||
|
||||
private List<Object> bindValues;
|
||||
|
||||
private boolean multiValueSupported;
|
||||
|
||||
InExpression(String propertyName, Collection<?> sourceValues, boolean not) {
|
||||
@@ -117,7 +113,6 @@ public final class InExpression extends AbstractExpression implements IdInCommon
|
||||
}
|
||||
}
|
||||
ElPropertyValue prop = getElProp(request);
|
||||
|
||||
List<Object> values = bindValues;
|
||||
if (prop != null && prop.isAssocId()) {
|
||||
values = new ArrayList<>();
|
||||
@@ -132,22 +127,22 @@ public final class InExpression extends AbstractExpression implements IdInCommon
|
||||
if (values.isEmpty()) {
|
||||
// nothing in in-query
|
||||
return;
|
||||
} else if (prop.isDbEncrypted()) {
|
||||
// bind the key as well as the value
|
||||
String encryptKey = prop.beanProperty().encryptKey().getStringValue();
|
||||
request.addBindEncryptKey(encryptKey);
|
||||
} else if (prop.isLocalEncrypted()) {
|
||||
List<Object> encValues = new ArrayList<>(values.size());
|
||||
for (Object value : values) {
|
||||
encValues.add(prop.localEncrypt(value));
|
||||
}
|
||||
// this is most likely binary garbage, so don't add it to the bind log
|
||||
request.addBindEncryptKey(new MultiValueWrapper(encValues));
|
||||
return;
|
||||
}
|
||||
|
||||
// if we have no property, we wrap them in a multi value wrapper.
|
||||
// later the binder will decide, which bind strategy to use.
|
||||
if (prop != null) {
|
||||
if (prop.isDbEncrypted()) {
|
||||
// bind the key as well as the value
|
||||
request.addBindEncryptKey(prop.beanProperty().encryptKey().getStringValue());
|
||||
} else if (prop.isLocalEncrypted()) {
|
||||
List<Object> encValues = new ArrayList<>(values.size());
|
||||
for (Object value : values) {
|
||||
encValues.add(prop.localEncrypt(value));
|
||||
}
|
||||
// this is most likely binary garbage, so don't add it to the bind log
|
||||
request.addBindEncryptKey(new MultiValueWrapper(encValues));
|
||||
return;
|
||||
}
|
||||
}
|
||||
// wrap in a multi value wrapper, later the binder will decide the bind strategy to use
|
||||
request.addBindValue(new MultiValueWrapper(values));
|
||||
}
|
||||
|
||||
|
||||
+1
-9
@@ -17,15 +17,7 @@ public class MultiValueBind {
|
||||
}
|
||||
|
||||
Object[] toArray(Collection<?> values, ScalarType<?> type) {
|
||||
if (type.binary()) {
|
||||
byte[][] array = new byte[values.size()][];
|
||||
int i = 0;
|
||||
for (Object value : values) {
|
||||
array[i++] = (byte[])type.toJdbcType(value);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
Object[] array = new Object[values.size()];
|
||||
Object[] array = type.binary() ? new byte[values.size()][] : new Object[values.size()];
|
||||
int i = 0;
|
||||
for (Object value : values) {
|
||||
array[i++] = type.toJdbcType(value);
|
||||
|
||||
+2
-2
@@ -65,8 +65,8 @@ class BasePlatformArrayTypeFactoryTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setString(String s) {
|
||||
setEmptyString = "[]".equals(s);
|
||||
public void setString(String value) {
|
||||
setEmptyString = "[]".equals(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user