mirror of
https://github.com/apache/openjpa.git
synced 2025-03-06 16:39:11 +00:00
OPENJPA-1726: fix boolean literal for Postgres
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@964989 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
90373cb93f
commit
a0b6b2a85d
@ -49,6 +49,7 @@ import org.apache.openjpa.jdbc.meta.strats.VerticalClassStrategy;
|
|||||||
import org.apache.openjpa.jdbc.schema.Column;
|
import org.apache.openjpa.jdbc.schema.Column;
|
||||||
import org.apache.openjpa.jdbc.schema.Table;
|
import org.apache.openjpa.jdbc.schema.Table;
|
||||||
import org.apache.openjpa.jdbc.sql.DBDictionary;
|
import org.apache.openjpa.jdbc.sql.DBDictionary;
|
||||||
|
import org.apache.openjpa.jdbc.sql.PostgresDictionary;
|
||||||
import org.apache.openjpa.jdbc.sql.SQLBuffer;
|
import org.apache.openjpa.jdbc.sql.SQLBuffer;
|
||||||
import org.apache.openjpa.jdbc.sql.SQLExceptions;
|
import org.apache.openjpa.jdbc.sql.SQLExceptions;
|
||||||
import org.apache.openjpa.jdbc.sql.Select;
|
import org.apache.openjpa.jdbc.sql.Select;
|
||||||
@ -142,7 +143,10 @@ public class JDBCStoreQuery
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected ExpressionFactory getExpressionFactory(ClassMetaData meta) {
|
protected ExpressionFactory getExpressionFactory(ClassMetaData meta) {
|
||||||
return new JDBCExpressionFactory((ClassMapping) meta);
|
JDBCExpressionFactory factory = new JDBCExpressionFactory((ClassMapping) meta);
|
||||||
|
if (_store.getDBDictionary() instanceof PostgresDictionary)
|
||||||
|
factory.setBooleanLiteralAsNumeric(false);
|
||||||
|
return factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ResultObjectProvider executeQuery(Executor ex,
|
protected ResultObjectProvider executeQuery(Executor ex,
|
||||||
|
@ -25,6 +25,7 @@ import org.apache.openjpa.jdbc.meta.ClassMapping;
|
|||||||
import org.apache.openjpa.jdbc.meta.Discriminator;
|
import org.apache.openjpa.jdbc.meta.Discriminator;
|
||||||
import org.apache.openjpa.jdbc.meta.strats.NoneDiscriminatorStrategy;
|
import org.apache.openjpa.jdbc.meta.strats.NoneDiscriminatorStrategy;
|
||||||
import org.apache.openjpa.jdbc.sql.DBDictionary;
|
import org.apache.openjpa.jdbc.sql.DBDictionary;
|
||||||
|
import org.apache.openjpa.jdbc.sql.PostgresDictionary;
|
||||||
import org.apache.openjpa.jdbc.sql.Raw;
|
import org.apache.openjpa.jdbc.sql.Raw;
|
||||||
import org.apache.openjpa.kernel.exps.AggregateListener;
|
import org.apache.openjpa.kernel.exps.AggregateListener;
|
||||||
import org.apache.openjpa.kernel.exps.Arguments;
|
import org.apache.openjpa.kernel.exps.Arguments;
|
||||||
@ -57,6 +58,8 @@ public class JDBCExpressionFactory
|
|||||||
private final ClassMapping _type;
|
private final ClassMapping _type;
|
||||||
private final SelectConstructor _cons = new SelectConstructor();
|
private final SelectConstructor _cons = new SelectConstructor();
|
||||||
private int _getMapValueAlias = 0;
|
private int _getMapValueAlias = 0;
|
||||||
|
|
||||||
|
private boolean _isBooleanLiteralAsNumeric = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor. Supply the type we're querying against.
|
* Constructor. Supply the type we're querying against.
|
||||||
@ -65,6 +68,10 @@ public class JDBCExpressionFactory
|
|||||||
_type = type;
|
_type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBooleanLiteralAsNumeric(boolean isBooleanLiteralAsNumeric) {
|
||||||
|
_isBooleanLiteralAsNumeric = isBooleanLiteralAsNumeric;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use to create SQL select.
|
* Use to create SQL select.
|
||||||
*/
|
*/
|
||||||
@ -504,10 +511,11 @@ public class JDBCExpressionFactory
|
|||||||
pType == Literal.TYPE_STRING)
|
pType == Literal.TYPE_STRING)
|
||||||
value.append("'").append(lit.getValue().toString()).append("'");
|
value.append("'").append(lit.getValue().toString()).append("'");
|
||||||
else if (pType == Literal.TYPE_BOOLEAN) {
|
else if (pType == Literal.TYPE_BOOLEAN) {
|
||||||
if ((Boolean) lit.getValue())
|
Boolean boolVal = (Boolean)lit.getValue();
|
||||||
value.append("1");
|
if (_isBooleanLiteralAsNumeric)
|
||||||
|
value.append(boolVal ? "1" : "0");
|
||||||
else
|
else
|
||||||
value.append("0");
|
value.append(boolVal ? "true" : "false");
|
||||||
} else if (pType == Literal.TYPE_ENUM) {
|
} else if (pType == Literal.TYPE_ENUM) {
|
||||||
lit.setRaw(true);
|
lit.setRaw(true);
|
||||||
return val;
|
return val;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user