class HibernateQueryTranslator extends
        AbstractHibernateQueryTranslator<Criterion, Orders, Projection> implements QueryTranslator<Criterion, Orders, Projection> {

    @Override
    protected <T> Criterion translate(NativeExpression e, Class<T> entityClass) {
        Class<?> expressionClass = e.getExpressionClass();
        if (expressionClass == String.class) {
            return Restrictions.sqlRestriction("(" + e.getExpression().toString() + ")");
        } else if (Criterion.class.isAssignableFrom(expressionClass)) {
            return (Criterion) e.getExpression();
        } else {
            throw unsupported(e);
        }
    }

    public  HibernateQueryTranslator(HibernatePropertyResolver propertyResolver,
            BoxMaker boxMaker,
            ContainsExpressionHandler<Criterion> containsExpressionHandler);
    public  HibernateQueryTranslator(HibernatePropertyResolver propertyResolver,
            BoxMaker boxMaker);
    public  HibernateQueryTranslator(HibernatePropertyResolver propertyResolver);

}