Example usage for org.hibernate.cfg Configuration getNamedSQLQueries

List of usage examples for org.hibernate.cfg Configuration getNamedSQLQueries

Introduction

In this page you can find the example usage for org.hibernate.cfg Configuration getNamedSQLQueries.

Prototype

public Map getNamedSQLQueries() 

Source Link

Usage

From source file:com.wavemaker.runtime.data.hibernate.DataServiceMetaData_Hib.java

License:Open Source License

@Override
public NamedQueryDefinition getQueryDefinition(String queryName) {
    Configuration cfg = getConfiguration();
    NamedQueryDefinition rtn = (NamedQueryDefinition) cfg.getNamedQueries().get(queryName);
    if (rtn == null) {
        rtn = (NamedQueryDefinition) cfg.getNamedSQLQueries().get(queryName);
    }/*from  ww  w. ja  va  2s. com*/
    return rtn;
}

From source file:com.wavemaker.runtime.data.hibernate.DataServiceMetaData_Hib.java

License:Open Source License

@Override
public NamedQueryDefinition getSqlQueryDefinition(String queryName) {
    Configuration cfg = getConfiguration();
    NamedQueryDefinition rtn = (NamedQueryDefinition) cfg.getNamedSQLQueries().get(queryName);
    return rtn;/*www.j  a v  a  2  s . c om*/
}

From source file:com.wavemaker.runtime.data.hibernate.DataServiceMetaData_Hib.java

License:Open Source License

private DataOperationFactory initFactory(final Session session) {
    return new DataOperationFactory() {

        // this is magic, and has to match the name of the
        // generated example query(ies).
        private static final String GENERATED_QUERY_NAME = "ExampleHQLQuery1";

        @Override/*from   www .  j  a v a 2  s. co  m*/
        public Collection<String> getEntityClassNames() {
            return DataServiceMetaData_Hib.this.entityClassNames;
        }

        @Override
        public List<Tuple.Three<String, String, Boolean>> getQueryInputs(String queryName) {

            List<Tuple.Three<String, String, Boolean>> rtn = new ArrayList<Tuple.Three<String, String, Boolean>>();

            NamedQueryDefinition def = getQueryDefinition(queryName);

            Map<String, String> m = CastUtils.cast(def.getParameterTypes());

            for (Map.Entry<String, String> e : m.entrySet()) {
                Tuple.Two<String, Boolean> t = DataServiceUtils.getQueryType(e.getValue());
                rtn.add(Tuple.tuple(e.getKey(), t.v1, t.v2));
            }

            return rtn;
        }

        @Override
        @SuppressWarnings("unchecked")
        public Collection<String> getQueryNames() {

            Collection<String> rtn = new HashSet<String>();

            Configuration cfg = getConfiguration();

            rtn.addAll(cfg.getNamedQueries().keySet());
            rtn.addAll(cfg.getNamedSQLQueries().keySet());

            return rtn;
        }

        @Override
        public List<String> getQueryReturnNames(String operationName, String queryName) {

            Query query = session.getNamedQuery(queryName);

            try {
                String[] names = query.getReturnAliases();
                if (names != null) {
                    return Arrays.asList(names);
                }
            } catch (RuntimeException ex) {
            }

            return Collections.emptyList();

        }

        @Override
        public boolean requiresResultWrapper(String operationName, String queryName) {
            NamedQueryDefinition query = getQueryDefinition(queryName);
            return DataServiceUtils.requiresResultWrapper(query.getQuery());
        }

        @Override
        public List<String> getQueryReturnTypes(String operationName, String queryName) {

            List<String> rtn = new ArrayList<String>();

            Type[] rtnTypes = getReturnTypes(queryName);

            String queryString = getQueryDefinition(queryName).getQuery();

            if (rtnTypes == null) {
                // Must be DML
                if (!DataServiceUtils.isDML(queryString)) {
                    // throw new AssertionError(
                    // "Query " + queryName + " doesn't return anything");
                    // actually if it is a sql query we also end up here -
                    // the tests have at least one...
                }
                rtn.add(DataServiceConstants.DML_OPERATION_RTN_TYPE.getName());
            } else {

                if (DataServiceUtils.isDynamicInstantiationQuery(queryString)) {
                    String className = DataServiceUtils.getDynamicInstantiationClassName(queryString);

                    if (!StringUtils.isFullyQualified(className)) {
                        if (DataServiceMetaData_Hib.this.entityNames.contains(className)) {
                            className = StringUtils.fq(getDataPackage(), className);
                        }
                    }
                    rtn.add(className);
                } else {
                    for (Type t : rtnTypes) {
                        rtn.add(getJavaTypeName(t));
                    }
                }
            }

            return rtn;
        }

        @Override
        public boolean queryReturnsSingleResult(String operationName, String queryName) {

            // hack for generated queries - only required for initial
            // ServiceDefinition instance that is used to add the service
            if (queryName.equals(GENERATED_QUERY_NAME)) {
                return true;
            }

            // to make existing tests happy
            if (queryName.startsWith("get") && queryName.endsWith("ById")) {
                return true;
            }

            return false;
        }

        private Type[] getReturnTypes(String queryName) {

            Type[] rtn = null;

            Query query = session.getNamedQuery(queryName);

            // this blows up for named sql queries (vs named hql queries)
            // exception msg from hibernate is: "not yet implemented for sql
            // queries"
            try {
                rtn = query.getReturnTypes();
            } catch (RuntimeException ex) {
                if (DataServiceLoggers.metaDataLogger.isDebugEnabled()) {
                    DataServiceLoggers.metaDataLogger
                            .debug("Failed to determine rtn type for query \"" + queryName + "\"");
                }
            }
            return rtn;
        }
    };
}