mirror of
https://github.com/querydsl/querydsl.git
synced 2026-07-03 21:07:49 +08:00
splitted HQLTemplates into JPQLTemplates and HQLTemplates
This commit is contained in:
parent
826ecea938
commit
d2ff00000c
@ -143,7 +143,7 @@ public class AbstractHQLSubQuery<Q extends AbstractHQLSubQuery<Q>> extends Detac
|
||||
|
||||
public String toString(){
|
||||
if (!queryMixin.getMetadata().getJoins().isEmpty()){
|
||||
HQLSerializer serializer = new HQLSerializer(HQLTemplates.DEFAULT);
|
||||
HQLSerializer serializer = new HQLSerializer(JPQLTemplates.DEFAULT);
|
||||
serializer.serialize(queryMixin.getMetadata(), false, null);
|
||||
return serializer.toString().trim();
|
||||
}else{
|
||||
|
||||
@ -3,11 +3,8 @@
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
package com.mysema.query;
|
||||
package com.mysema.query.hql;
|
||||
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.types.Constant;
|
||||
import com.mysema.query.types.Operator;
|
||||
import com.mysema.query.types.Ops;
|
||||
|
||||
/**
|
||||
@ -16,18 +13,15 @@ import com.mysema.query.types.Ops;
|
||||
* @author tiwe
|
||||
*
|
||||
*/
|
||||
public class EclipseLinkTemplates extends HQLTemplates{
|
||||
public class EclipseLinkTemplates extends JPQLTemplates{
|
||||
|
||||
public static final EclipseLinkTemplates DEFAULT = new EclipseLinkTemplates();
|
||||
public static final JPQLTemplates DEFAULT = new EclipseLinkTemplates();
|
||||
|
||||
// TODO : indexed list access
|
||||
|
||||
// TODO : cast
|
||||
|
||||
protected EclipseLinkTemplates() {
|
||||
// JPQL standard
|
||||
add(Ops.INSTANCE_OF, "type({0}) = {1}");
|
||||
|
||||
// LIKE replacements
|
||||
add(Ops.STRING_CONTAINS, "locate({1},{0}) > 0");
|
||||
add(Ops.STRING_CONTAINS_IC, "locate({1l},{0l}) > 0");
|
||||
@ -50,17 +44,5 @@ public class EclipseLinkTemplates extends HQLTemplates{
|
||||
|
||||
}
|
||||
|
||||
public boolean wrapElements(Operator<?> operator){
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean wrapConstant(Constant<?> expr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isTypeAsString() {
|
||||
// TODO : get rid of this when Hibernate supports type(alias)
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@ -27,9 +27,9 @@ public abstract class HQLQueryBase<Q extends HQLQueryBase<Q>> extends Projectabl
|
||||
|
||||
private final HQLQueryMixin<Q> queryMixin;
|
||||
|
||||
private final HQLTemplates templates;
|
||||
private final JPQLTemplates templates;
|
||||
|
||||
protected HQLTemplates getTemplates(){
|
||||
protected JPQLTemplates getTemplates(){
|
||||
return templates;
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ public abstract class HQLQueryBase<Q extends HQLQueryBase<Q>> extends Projectabl
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public HQLQueryBase(QueryMetadata md, HQLTemplates templates) {
|
||||
public HQLQueryBase(QueryMetadata md, JPQLTemplates templates) {
|
||||
super(new HQLQueryMixin<Q>(md));
|
||||
super.queryMixin.setSelf((Q) this);
|
||||
this.queryMixin = (HQLQueryMixin) super.queryMixin;
|
||||
|
||||
@ -77,7 +77,7 @@ public class HQLSerializer extends SerializerBase<HQLSerializer> {
|
||||
|
||||
private static final Map<JoinType, String> joinTypes = new HashMap<JoinType, String>();
|
||||
|
||||
private final HQLTemplates templates;
|
||||
private final JPQLTemplates templates;
|
||||
|
||||
static{
|
||||
joinTypes.put(JoinType.DEFAULT, COMMA);
|
||||
@ -89,7 +89,7 @@ public class HQLSerializer extends SerializerBase<HQLSerializer> {
|
||||
|
||||
private boolean wrapElements = false;
|
||||
|
||||
public HQLSerializer(HQLTemplates templates) {
|
||||
public HQLSerializer(JPQLTemplates templates) {
|
||||
super(templates);
|
||||
this.templates = templates;
|
||||
}
|
||||
@ -303,7 +303,7 @@ public class HQLSerializer extends SerializerBase<HQLSerializer> {
|
||||
|
||||
if (operator.equals(Ops.IN)){
|
||||
if (args.get(1) instanceof Path){
|
||||
super.visitOperation(type, HQLTemplates.MEMBER_OF, args);
|
||||
super.visitOperation(type, JPQLTemplates.MEMBER_OF, args);
|
||||
}else{
|
||||
super.visitOperation(type, operator, args);
|
||||
}
|
||||
@ -326,7 +326,7 @@ public class HQLSerializer extends SerializerBase<HQLSerializer> {
|
||||
} else if (operator.equals(Ops.NUMCAST)) {
|
||||
Class<?> targetType = (Class<?>) ((Constant<?>) args.get(1)).getConstant();
|
||||
String typeName = targetType.getSimpleName().toLowerCase(Locale.ENGLISH);
|
||||
visitOperation(targetType, HQLTemplates.CAST, Arrays.<Expr<?>>asList(args.get(0), ExprConst.create(typeName)));
|
||||
visitOperation(targetType, JPQLTemplates.CAST, Arrays.<Expr<?>>asList(args.get(0), ExprConst.create(typeName)));
|
||||
|
||||
} else if (operator.equals(Ops.EXISTS) && args.get(0) instanceof SubQuery){
|
||||
SubQuery subQuery = (SubQuery) args.get(0);
|
||||
|
||||
@ -1,142 +1,68 @@
|
||||
/*
|
||||
* Copyright (c) 2010 Mysema Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
package com.mysema.query.hql;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.mysema.query.types.Constant;
|
||||
import com.mysema.query.types.Operator;
|
||||
import com.mysema.query.types.OperatorImpl;
|
||||
import com.mysema.query.types.Ops;
|
||||
import com.mysema.query.types.PathType;
|
||||
import com.mysema.query.types.Templates;
|
||||
|
||||
/**
|
||||
* HQLTemplates extends Templates to provide operator patterns for HQL
|
||||
* serialization
|
||||
*
|
||||
* @author tiwe
|
||||
* @version $Id$
|
||||
*/
|
||||
public class HQLTemplates extends Templates {
|
||||
|
||||
public static final Operator<Object> CAST = new OperatorImpl<Object>(Object.class, Object.class);
|
||||
|
||||
public static final Operator<Boolean> MEMBER_OF = new OperatorImpl<Boolean>(Object.class, Object.class);
|
||||
|
||||
public static final HQLTemplates DEFAULT = new HQLTemplates();
|
||||
|
||||
private final List<Operator<?>> wrapElements = Arrays.<Operator<?>> asList(
|
||||
Ops.QuantOps.ALL,
|
||||
Ops.QuantOps.ANY,
|
||||
Ops.QuantOps.AVG_IN_COL,
|
||||
Ops.EXISTS);
|
||||
|
||||
protected HQLTemplates() {
|
||||
//CHECKSTYLE:OFF
|
||||
// boolean
|
||||
add(Ops.AND, "{0} and {1}", 36);
|
||||
add(Ops.NOT, "not {0}", 3);
|
||||
add(Ops.OR, "{0} or {1}", 38);
|
||||
add(Ops.XNOR, "{0} xnor {1}", 39);
|
||||
add(Ops.XOR, "{0} xor {1}", 39);
|
||||
|
||||
// comparison
|
||||
add(Ops.BETWEEN, "{0} between {1} and {2}", 30);
|
||||
|
||||
// numeric
|
||||
add(Ops.MathOps.SQRT, "sqrt({0})");
|
||||
|
||||
// various
|
||||
add(Ops.NE_PRIMITIVE, "{0} <> {1}", 25);
|
||||
add(Ops.NE_OBJECT, "{0} <> {1}", 25);
|
||||
add(Ops.IS_NULL, "{0} is null", 26);
|
||||
add(Ops.IS_NOT_NULL, "{0} is not null", 26);
|
||||
|
||||
// collection
|
||||
add(MEMBER_OF, "{0} member of {1}");
|
||||
|
||||
add(Ops.IN, "{0} in {1}");
|
||||
add(Ops.COL_IS_EMPTY, "{0} is empty");
|
||||
add(Ops.COL_SIZE, "size({0})");
|
||||
add(Ops.ARRAY_SIZE, "size({0})");
|
||||
|
||||
// string
|
||||
add(Ops.LIKE, "{0} like {1}",1);
|
||||
add(Ops.CONCAT, "concat({0},{1})",0);
|
||||
add(Ops.MATCHES, "{0} like {1}", 27); // TODO : support real regexes
|
||||
add(Ops.LOWER, "lower({0})");
|
||||
add(Ops.SUBSTR_1ARG, "substring({0},{1}+1)");
|
||||
add(Ops.SUBSTR_2ARGS, "substring({0},{1}+1,{2})");
|
||||
add(Ops.TRIM, "trim({0})");
|
||||
add(Ops.UPPER, "upper({0})");
|
||||
add(Ops.EQ_IGNORE_CASE, "{0l} = {1l}");
|
||||
add(Ops.CHAR_AT, "cast(substring({0},{1}+1,1) as char)");
|
||||
add(Ops.STRING_IS_EMPTY, "length({0}) = 0");
|
||||
|
||||
add(Ops.STRING_CONTAINS, "{0} like {%1%}");
|
||||
add(Ops.STRING_CONTAINS_IC, "{0l} like {%%1%%}");
|
||||
add(Ops.ENDS_WITH, "{0} like {%1}");
|
||||
add(Ops.ENDS_WITH_IC, "{0l} like {%%1}");
|
||||
add(Ops.STARTS_WITH, "{0} like {1%}");
|
||||
add(Ops.STARTS_WITH_IC, "{0l} like {1%%}");
|
||||
add(Ops.INDEX_OF, "locate({1},{0}) - 1");
|
||||
add(Ops.INDEX_OF_2ARGS, "locate({1},{0},{2}+1) - 1");
|
||||
|
||||
// date time
|
||||
add(Ops.DateTimeOps.SYSDATE, "sysdate");
|
||||
add(Ops.DateTimeOps.CURRENT_DATE, "current_date()");
|
||||
add(Ops.DateTimeOps.CURRENT_TIME, "current_time()");
|
||||
add(Ops.DateTimeOps.CURRENT_TIMESTAMP, "current_timestamp()");
|
||||
|
||||
|
||||
// path types
|
||||
for (PathType type : new PathType[] {
|
||||
PathType.LISTVALUE,
|
||||
PathType.MAPVALUE,
|
||||
PathType.MAPVALUE_CONSTANT }) {
|
||||
add(type, "{0}[{1}]");
|
||||
}
|
||||
add(PathType.LISTVALUE_CONSTANT, "{0}[{1s}]");
|
||||
add(PathType.PROPERTY, "{0}.{1s}");
|
||||
add(PathType.VARIABLE, "{0s}");
|
||||
|
||||
// case for eq
|
||||
add(Ops.CASE_EQ, "case {1} end");
|
||||
add(Ops.CASE_EQ_WHEN, "when {0} = {1} then {2} {3}");
|
||||
add(Ops.CASE_EQ_ELSE, "else {0}");
|
||||
|
||||
|
||||
// HQL specific
|
||||
add(CAST, "cast({0} as {1s})");
|
||||
|
||||
add(Ops.DateTimeOps.MILLISECOND, "0"); // NOT supported in HQL
|
||||
add(Ops.DateTimeOps.SECOND, "second({0})");
|
||||
add(Ops.DateTimeOps.MINUTE, "minute({0})");
|
||||
add(Ops.DateTimeOps.HOUR, "hour({0})");
|
||||
add(Ops.DateTimeOps.DAY_OF_MONTH, "day({0})");
|
||||
add(Ops.DateTimeOps.MONTH, "month({0})");
|
||||
add(Ops.DateTimeOps.YEAR, "year({0})");
|
||||
add(Ops.DateTimeOps.YEAR_MONTH, "year({0}) * 100 + month({0})");
|
||||
//CHECKSTYLE:ON
|
||||
}
|
||||
|
||||
public boolean wrapElements(Operator<?> operator){
|
||||
return wrapElements.contains(operator);
|
||||
}
|
||||
|
||||
public boolean wrapConstant(Constant<?> expr) {
|
||||
Class<?> type = expr.asExpr().getType();
|
||||
return type.isArray() || Collection.class.isAssignableFrom(type);
|
||||
}
|
||||
|
||||
public boolean isTypeAsString() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
package com.mysema.query.hql;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.mysema.query.types.Constant;
|
||||
import com.mysema.query.types.Operator;
|
||||
import com.mysema.query.types.Ops;
|
||||
import com.mysema.query.types.PathType;
|
||||
|
||||
/**
|
||||
* HQLTemplates extends JPQLTemplates with Hibernate specific fixes
|
||||
*
|
||||
* @author tiwe
|
||||
*
|
||||
*/
|
||||
public class HQLTemplates extends JPQLTemplates{
|
||||
|
||||
private static final List<Operator<?>> wrapElements = Arrays.<Operator<?>> asList(
|
||||
Ops.QuantOps.ALL,
|
||||
Ops.QuantOps.ANY,
|
||||
Ops.QuantOps.AVG_IN_COL,
|
||||
Ops.EXISTS);
|
||||
|
||||
public static final HQLTemplates DEFAULT = new HQLTemplates();
|
||||
|
||||
protected HQLTemplates() {
|
||||
//CHECKSTYLE:OFF
|
||||
add(CAST, "cast({0} as {1s})");
|
||||
add(Ops.INSTANCE_OF, "{0}.class = {1}");
|
||||
add(MEMBER_OF, "{0} in elements({1})");
|
||||
|
||||
// path types
|
||||
for (PathType type : new PathType[] {
|
||||
PathType.LISTVALUE,
|
||||
PathType.MAPVALUE,
|
||||
PathType.MAPVALUE_CONSTANT }) {
|
||||
add(type, "{0}[{1}]");
|
||||
}
|
||||
add(PathType.LISTVALUE_CONSTANT, "{0}[{1s}]");
|
||||
|
||||
// date time
|
||||
add(Ops.DateTimeOps.MILLISECOND, "0"); // NOT supported in HQL
|
||||
add(Ops.DateTimeOps.SECOND, "second({0})");
|
||||
add(Ops.DateTimeOps.MINUTE, "minute({0})");
|
||||
add(Ops.DateTimeOps.HOUR, "hour({0})");
|
||||
add(Ops.DateTimeOps.DAY_OF_MONTH, "day({0})");
|
||||
add(Ops.DateTimeOps.MONTH, "month({0})");
|
||||
add(Ops.DateTimeOps.YEAR, "year({0})");
|
||||
add(Ops.DateTimeOps.YEAR_MONTH, "year({0}) * 100 + month({0})");
|
||||
//CHECKSTYLE:ON
|
||||
}
|
||||
|
||||
public boolean wrapElements(Operator<?> operator){
|
||||
return wrapElements.contains(operator);
|
||||
}
|
||||
|
||||
public boolean wrapConstant(Constant<?> expr) {
|
||||
Class<?> type = expr.asExpr().getType();
|
||||
return type.isArray() || Collection.class.isAssignableFrom(type);
|
||||
}
|
||||
|
||||
public boolean isTypeAsString() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Copyright (c) 2010 Mysema Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
package com.mysema.query.hql;
|
||||
|
||||
import com.mysema.query.types.Constant;
|
||||
import com.mysema.query.types.Operator;
|
||||
import com.mysema.query.types.OperatorImpl;
|
||||
import com.mysema.query.types.Ops;
|
||||
import com.mysema.query.types.PathType;
|
||||
import com.mysema.query.types.Templates;
|
||||
|
||||
/**
|
||||
* JPQLTemplates extends Templates to provide operator patterns for HQL
|
||||
* serialization
|
||||
*
|
||||
* @author tiwe
|
||||
* @version $Id$
|
||||
*/
|
||||
public class JPQLTemplates extends Templates {
|
||||
|
||||
public static final Operator<Object> CAST = new OperatorImpl<Object>(Object.class, Object.class);
|
||||
|
||||
public static final Operator<Boolean> MEMBER_OF = new OperatorImpl<Boolean>(Object.class, Object.class);
|
||||
|
||||
public static final JPQLTemplates DEFAULT = new JPQLTemplates();
|
||||
|
||||
protected JPQLTemplates() {
|
||||
//CHECKSTYLE:OFF
|
||||
// boolean
|
||||
add(Ops.AND, "{0} and {1}", 36);
|
||||
add(Ops.NOT, "not {0}", 3);
|
||||
add(Ops.OR, "{0} or {1}", 38);
|
||||
add(Ops.XNOR, "{0} xnor {1}", 39);
|
||||
add(Ops.XOR, "{0} xor {1}", 39);
|
||||
|
||||
// comparison
|
||||
add(Ops.BETWEEN, "{0} between {1} and {2}", 30);
|
||||
|
||||
// numeric
|
||||
add(Ops.MathOps.SQRT, "sqrt({0})");
|
||||
|
||||
// various
|
||||
add(Ops.NE_PRIMITIVE, "{0} <> {1}", 25);
|
||||
add(Ops.NE_OBJECT, "{0} <> {1}", 25);
|
||||
add(Ops.IS_NULL, "{0} is null", 26);
|
||||
add(Ops.IS_NOT_NULL, "{0} is not null", 26);
|
||||
|
||||
// collection
|
||||
add(MEMBER_OF, "{0} member of {1}");
|
||||
|
||||
add(Ops.IN, "{0} in {1}");
|
||||
add(Ops.COL_IS_EMPTY, "{0} is empty");
|
||||
add(Ops.COL_SIZE, "size({0})");
|
||||
add(Ops.ARRAY_SIZE, "size({0})");
|
||||
|
||||
// string
|
||||
add(Ops.LIKE, "{0} like {1}",1);
|
||||
add(Ops.CONCAT, "concat({0},{1})",0);
|
||||
add(Ops.MATCHES, "{0} like {1}", 27); // TODO : support real regexes
|
||||
add(Ops.LOWER, "lower({0})");
|
||||
add(Ops.SUBSTR_1ARG, "substring({0},{1}+1)");
|
||||
add(Ops.SUBSTR_2ARGS, "substring({0},{1}+1,{2})");
|
||||
add(Ops.TRIM, "trim({0})");
|
||||
add(Ops.UPPER, "upper({0})");
|
||||
add(Ops.EQ_IGNORE_CASE, "{0l} = {1l}");
|
||||
add(Ops.CHAR_AT, "cast(substring({0},{1}+1,1) as char)");
|
||||
add(Ops.STRING_IS_EMPTY, "length({0}) = 0");
|
||||
|
||||
add(Ops.STRING_CONTAINS, "{0} like {%1%}");
|
||||
add(Ops.STRING_CONTAINS_IC, "{0l} like {%%1%%}");
|
||||
add(Ops.ENDS_WITH, "{0} like {%1}");
|
||||
add(Ops.ENDS_WITH_IC, "{0l} like {%%1}");
|
||||
add(Ops.STARTS_WITH, "{0} like {1%}");
|
||||
add(Ops.STARTS_WITH_IC, "{0l} like {1%%}");
|
||||
add(Ops.INDEX_OF, "locate({1},{0}) - 1");
|
||||
add(Ops.INDEX_OF_2ARGS, "locate({1},{0},{2}+1) - 1");
|
||||
|
||||
// date time
|
||||
add(Ops.DateTimeOps.SYSDATE, "sysdate");
|
||||
add(Ops.DateTimeOps.CURRENT_DATE, "current_date()");
|
||||
add(Ops.DateTimeOps.CURRENT_TIME, "current_time()");
|
||||
add(Ops.DateTimeOps.CURRENT_TIMESTAMP, "current_timestamp()");
|
||||
|
||||
|
||||
// path types
|
||||
add(PathType.PROPERTY, "{0}.{1s}");
|
||||
add(PathType.VARIABLE, "{0s}");
|
||||
|
||||
// case for eq
|
||||
add(Ops.CASE_EQ, "case {1} end");
|
||||
add(Ops.CASE_EQ_WHEN, "when {0} = {1} then {2} {3}");
|
||||
add(Ops.CASE_EQ_ELSE, "else {0}");
|
||||
|
||||
add(Ops.INSTANCE_OF, "type({0}) = {1}");
|
||||
|
||||
//CHECKSTYLE:ON
|
||||
}
|
||||
|
||||
public boolean wrapElements(Operator<?> operator){
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean wrapConstant(Constant<?> expr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isTypeAsString() {
|
||||
// TODO : get rid of this when Hibernate supports type(alias)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -28,6 +28,7 @@ import com.mysema.query.QueryModifiers;
|
||||
import com.mysema.query.SearchResults;
|
||||
import com.mysema.query.hql.HQLQueryBase;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.types.EConstructor;
|
||||
import com.mysema.query.types.Expr;
|
||||
import com.mysema.query.types.Path;
|
||||
@ -59,7 +60,7 @@ public abstract class AbstractHibernateQuery<Q extends AbstractHibernateQuery<Q>
|
||||
this(new DefaultSessionHolder(session), HQLTemplates.DEFAULT, new DefaultQueryMetadata());
|
||||
}
|
||||
|
||||
public AbstractHibernateQuery(SessionHolder session, HQLTemplates patterns, QueryMetadata metadata) {
|
||||
public AbstractHibernateQuery(SessionHolder session, JPQLTemplates patterns, QueryMetadata metadata) {
|
||||
super(metadata, patterns);
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@ import com.mysema.query.QueryMetadata;
|
||||
import com.mysema.query.dml.DeleteClause;
|
||||
import com.mysema.query.hql.HQLSerializer;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.types.expr.EBoolean;
|
||||
import com.mysema.query.types.path.PEntity;
|
||||
|
||||
@ -32,7 +33,7 @@ public class HibernateDeleteClause implements DeleteClause<HibernateDeleteClause
|
||||
|
||||
private final SessionHolder session;
|
||||
|
||||
private final HQLTemplates templates;
|
||||
private final JPQLTemplates templates;
|
||||
|
||||
public HibernateDeleteClause(Session session, PEntity<?> entity){
|
||||
this(new DefaultSessionHolder(session), entity, HQLTemplates.DEFAULT);
|
||||
@ -42,7 +43,7 @@ public class HibernateDeleteClause implements DeleteClause<HibernateDeleteClause
|
||||
this(new StatelessSessionHolder(session), entity, HQLTemplates.DEFAULT);
|
||||
}
|
||||
|
||||
public HibernateDeleteClause(SessionHolder session, PEntity<?> entity, HQLTemplates templates){
|
||||
public HibernateDeleteClause(SessionHolder session, PEntity<?> entity, JPQLTemplates templates){
|
||||
this.session = session;
|
||||
this.templates = templates;
|
||||
md.addJoin(JoinType.DEFAULT, entity);
|
||||
|
||||
@ -12,6 +12,7 @@ import com.mysema.query.DefaultQueryMetadata;
|
||||
import com.mysema.query.QueryMetadata;
|
||||
import com.mysema.query.hql.HQLQuery;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
|
||||
|
||||
/**
|
||||
@ -45,7 +46,7 @@ public final class HibernateQuery extends AbstractHibernateQuery<HibernateQuery>
|
||||
* @param session
|
||||
* @param templates
|
||||
*/
|
||||
public HibernateQuery(Session session, HQLTemplates templates) {
|
||||
public HibernateQuery(Session session, JPQLTemplates templates) {
|
||||
this(new DefaultSessionHolder(session), templates);
|
||||
}
|
||||
|
||||
@ -63,7 +64,7 @@ public final class HibernateQuery extends AbstractHibernateQuery<HibernateQuery>
|
||||
* @param session
|
||||
* @param templates
|
||||
*/
|
||||
public HibernateQuery(SessionHolder session, HQLTemplates templates) {
|
||||
public HibernateQuery(SessionHolder session, JPQLTemplates templates) {
|
||||
super(session, templates, new DefaultQueryMetadata());
|
||||
}
|
||||
|
||||
@ -72,7 +73,7 @@ public final class HibernateQuery extends AbstractHibernateQuery<HibernateQuery>
|
||||
* @param templates
|
||||
* @param metadata
|
||||
*/
|
||||
protected HibernateQuery(SessionHolder session, HQLTemplates templates, QueryMetadata metadata) {
|
||||
protected HibernateQuery(SessionHolder session, JPQLTemplates templates, QueryMetadata metadata) {
|
||||
super(session, templates, metadata);
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@ import com.mysema.query.QueryMetadata;
|
||||
import com.mysema.query.dml.UpdateClause;
|
||||
import com.mysema.query.hql.HQLSerializer;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.types.Expr;
|
||||
import com.mysema.query.types.Path;
|
||||
import com.mysema.query.types.expr.EBoolean;
|
||||
@ -36,7 +37,7 @@ public class HibernateUpdateClause implements
|
||||
|
||||
private final SessionHolder session;
|
||||
|
||||
private final HQLTemplates templates;
|
||||
private final JPQLTemplates templates;
|
||||
|
||||
public HibernateUpdateClause(Session session, PEntity<?> entity) {
|
||||
this(new DefaultSessionHolder(session), entity, HQLTemplates.DEFAULT);
|
||||
@ -46,8 +47,7 @@ public class HibernateUpdateClause implements
|
||||
this(new StatelessSessionHolder(session), entity, HQLTemplates.DEFAULT);
|
||||
}
|
||||
|
||||
public HibernateUpdateClause(SessionHolder session, PEntity<?> entity,
|
||||
HQLTemplates templates) {
|
||||
public HibernateUpdateClause(SessionHolder session, PEntity<?> entity, JPQLTemplates templates) {
|
||||
this.session = session;
|
||||
this.templates = templates;
|
||||
metadata.addJoin(JoinType.DEFAULT, entity);
|
||||
|
||||
@ -22,6 +22,7 @@ import com.mysema.query.QueryModifiers;
|
||||
import com.mysema.query.SearchResults;
|
||||
import com.mysema.query.hql.HQLQueryBase;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.types.Expr;
|
||||
|
||||
/**
|
||||
@ -41,7 +42,7 @@ public abstract class AbstractJPAQuery<Q extends AbstractJPAQuery<Q>> extends HQ
|
||||
this(new DefaultSessionHolder(em), HQLTemplates.DEFAULT, new DefaultQueryMetadata());
|
||||
}
|
||||
|
||||
public AbstractJPAQuery(JPASessionHolder sessionHolder, HQLTemplates patterns, QueryMetadata metadata) {
|
||||
public AbstractJPAQuery(JPASessionHolder sessionHolder, JPQLTemplates patterns, QueryMetadata metadata) {
|
||||
super(metadata, patterns);
|
||||
this.sessionHolder = sessionHolder;
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@ import com.mysema.query.QueryMetadata;
|
||||
import com.mysema.query.dml.DeleteClause;
|
||||
import com.mysema.query.hql.HQLSerializer;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.types.expr.EBoolean;
|
||||
import com.mysema.query.types.path.PEntity;
|
||||
|
||||
@ -31,13 +32,13 @@ public class JPADeleteClause implements DeleteClause<JPADeleteClause>{
|
||||
|
||||
private final EntityManager entityManager;
|
||||
|
||||
private final HQLTemplates templates;
|
||||
private final JPQLTemplates templates;
|
||||
|
||||
public JPADeleteClause(EntityManager em, PEntity<?> entity){
|
||||
this(em, entity, HQLTemplates.DEFAULT);
|
||||
}
|
||||
|
||||
public JPADeleteClause(EntityManager entityManager, PEntity<?> entity, HQLTemplates templates){
|
||||
public JPADeleteClause(EntityManager entityManager, PEntity<?> entity, JPQLTemplates templates){
|
||||
this.entityManager = entityManager;
|
||||
this.templates = templates;
|
||||
metadata.addJoin(JoinType.DEFAULT, entity);
|
||||
|
||||
@ -11,6 +11,7 @@ import com.mysema.query.DefaultQueryMetadata;
|
||||
import com.mysema.query.QueryMetadata;
|
||||
import com.mysema.query.hql.HQLQuery;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
|
||||
/**
|
||||
* JPAQuery is the default implementation of the HQLQuery interface for JPA
|
||||
@ -43,7 +44,7 @@ public final class JPAQuery extends AbstractJPAQuery<JPAQuery> implements HQLQue
|
||||
* @param entityManager
|
||||
* @param patterns
|
||||
*/
|
||||
public JPAQuery(EntityManager entityManager, HQLTemplates patterns) {
|
||||
public JPAQuery(EntityManager entityManager, JPQLTemplates patterns) {
|
||||
super(new DefaultSessionHolder(entityManager), patterns, new DefaultQueryMetadata());
|
||||
}
|
||||
|
||||
@ -52,7 +53,7 @@ public final class JPAQuery extends AbstractJPAQuery<JPAQuery> implements HQLQue
|
||||
* @param templates
|
||||
* @param metadata
|
||||
*/
|
||||
protected JPAQuery(JPASessionHolder session, HQLTemplates templates, QueryMetadata metadata) {
|
||||
protected JPAQuery(JPASessionHolder session, JPQLTemplates templates, QueryMetadata metadata) {
|
||||
super(session, templates, metadata);
|
||||
}
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ import com.mysema.query.QueryMetadata;
|
||||
import com.mysema.query.dml.UpdateClause;
|
||||
import com.mysema.query.hql.HQLSerializer;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.hibernate.HibernateUpdateClause;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.types.Expr;
|
||||
import com.mysema.query.types.Path;
|
||||
import com.mysema.query.types.expr.EBoolean;
|
||||
@ -35,13 +35,13 @@ public class JPAUpdateClause implements UpdateClause<JPAUpdateClause>{
|
||||
|
||||
private final EntityManager entityManager;
|
||||
|
||||
private final HQLTemplates templates;
|
||||
private final JPQLTemplates templates;
|
||||
|
||||
public JPAUpdateClause(EntityManager session, PEntity<?> entity){
|
||||
this(session, entity, HQLTemplates.DEFAULT);
|
||||
}
|
||||
|
||||
public JPAUpdateClause(EntityManager em, PEntity<?> entity, HQLTemplates templates){
|
||||
public JPAUpdateClause(EntityManager em, PEntity<?> entity, JPQLTemplates templates){
|
||||
this.entityManager = em;
|
||||
this.templates = templates;
|
||||
metadata.addJoin(JoinType.DEFAULT, entity);
|
||||
|
||||
@ -19,6 +19,7 @@ import org.junit.Test;
|
||||
|
||||
import com.mysema.commons.lang.CloseableIterator;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.hql.domain.Cat;
|
||||
import com.mysema.query.hql.domain.QCat;
|
||||
import com.mysema.query.hql.hibernate.HibernateQuery;
|
||||
@ -36,7 +37,7 @@ public abstract class AbstractHibernateTest extends AbstractStandardTest{
|
||||
return new HibernateQuery(session, getTemplates());
|
||||
}
|
||||
|
||||
protected HQLTemplates getTemplates(){
|
||||
protected JPQLTemplates getTemplates(){
|
||||
return HQLTemplates.DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import javax.persistence.EntityManager;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.query.hql.domain.Cat;
|
||||
import com.mysema.query.hql.domain.QCat;
|
||||
import com.mysema.query.hql.jpa.JPAQuery;
|
||||
@ -31,7 +32,7 @@ public abstract class AbstractJPATest extends AbstractStandardTest{
|
||||
return new JPAQuery(entityManager, getTemplates());
|
||||
}
|
||||
|
||||
protected HQLTemplates getTemplates(){
|
||||
protected JPQLTemplates getTemplates(){
|
||||
return HQLTemplates.DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
@ -8,9 +8,9 @@ package com.mysema.query._derby;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import com.mysema.query.AbstractJPATest;
|
||||
import com.mysema.query.EclipseLinkTemplates;
|
||||
import com.mysema.query.Target;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.EclipseLinkTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.testutil.JPAConfig;
|
||||
import com.mysema.testutil.JPATestRunner;
|
||||
|
||||
@ -22,7 +22,7 @@ import com.mysema.testutil.JPATestRunner;
|
||||
@JPAConfig("derby-eclipselink")
|
||||
public abstract class DerbyJPAEclipseLinkTest extends AbstractJPATest{
|
||||
|
||||
protected HQLTemplates getTemplates(){
|
||||
protected JPQLTemplates getTemplates(){
|
||||
return EclipseLinkTemplates.DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
@ -8,9 +8,9 @@ package com.mysema.query._h2;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import com.mysema.query.AbstractJPATest;
|
||||
import com.mysema.query.EclipseLinkTemplates;
|
||||
import com.mysema.query.Target;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.EclipseLinkTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.testutil.JPAConfig;
|
||||
import com.mysema.testutil.JPATestRunner;
|
||||
|
||||
@ -22,7 +22,7 @@ import com.mysema.testutil.JPATestRunner;
|
||||
@JPAConfig("h2-eclipselink")
|
||||
public abstract class H2JPAEclipseLinkTest extends AbstractJPATest{
|
||||
|
||||
protected HQLTemplates getTemplates(){
|
||||
protected JPQLTemplates getTemplates(){
|
||||
return EclipseLinkTemplates.DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
@ -8,9 +8,9 @@ package com.mysema.query._hsqldb;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import com.mysema.query.AbstractJPATest;
|
||||
import com.mysema.query.EclipseLinkTemplates;
|
||||
import com.mysema.query.Target;
|
||||
import com.mysema.query.hql.HQLTemplates;
|
||||
import com.mysema.query.hql.EclipseLinkTemplates;
|
||||
import com.mysema.query.hql.JPQLTemplates;
|
||||
import com.mysema.testutil.JPAConfig;
|
||||
import com.mysema.testutil.JPATestRunner;
|
||||
|
||||
@ -24,7 +24,7 @@ import com.mysema.testutil.JPATestRunner;
|
||||
@JPAConfig("hsqldb-eclipselink")
|
||||
public abstract class HSQLDBJPAEclipseLinkStandardTest extends AbstractJPATest{
|
||||
|
||||
protected HQLTemplates getTemplates(){
|
||||
protected JPQLTemplates getTemplates(){
|
||||
return EclipseLinkTemplates.DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
@ -13,11 +13,11 @@ public class CollectionTest extends AbstractQueryTest{
|
||||
|
||||
@Test
|
||||
public void test(){
|
||||
assertToString(":a1 member of cat.kittensSet", cat.kittensSet.contains(new Cat()));
|
||||
assertToString(":a1 member of cat.kittens", cat.kittens.contains(new Cat()));
|
||||
assertToString(":a1 in elements(cat.kittensSet)", cat.kittensSet.contains(new Cat()));
|
||||
assertToString(":a1 in elements(cat.kittens)", cat.kittens.contains(new Cat()));
|
||||
|
||||
assertToString("cat member of cat1.kittens", cat.in(cat1.kittens));
|
||||
assertToString("cat member of cat1.kittensSet", cat.in(cat1.kittensSet));
|
||||
assertToString("cat in elements(cat1.kittens)", cat.in(cat1.kittens));
|
||||
assertToString("cat in elements(cat1.kittensSet)", cat.in(cat1.kittensSet));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -115,7 +115,7 @@ public class FeaturesTest extends AbstractQueryTest {
|
||||
|
||||
// toString("cat.bodyWeight as bw", cat.bodyWeight.as("bw"));
|
||||
|
||||
assertToString("kitten member of cat.kittens", kitten.in(cat.kittens));
|
||||
assertToString("kitten in elements(cat.kittens)", kitten.in(cat.kittens));
|
||||
|
||||
// toString("distinct cat.bodyWeight", distinct(cat.bodyWeight));
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user