List of usage examples for org.hibernate Query getReturnTypes
@Deprecated Type[] getReturnTypes();
From source file:com.ikon.servlet.admin.DatabaseQueryServlet.java
License:Open Source License
/** * Execute hibernate sentence/*from w w w . j ava 2 s . c o m*/ */ @SuppressWarnings("unchecked") private GlobalResult executeHQL(Session session, String hql, List<String> vtables) throws HibernateException, DatabaseException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { long begin = System.currentTimeMillis(); if (hql.toUpperCase().startsWith("SELECT") || hql.toUpperCase().startsWith("FROM")) { Query q = session.createQuery(hql); List<Object> ret = q.list(); List<String> columns = new ArrayList<String>(); List<String> vcolumns = new ArrayList<String>(); List<List<String>> results = new ArrayList<List<String>>(); Type[] rt = q.getReturnTypes(); int i = 0; if (vtables == null) { for (i = 0; i < rt.length; i++) { columns.add(rt[i].getName()); } } else { for (String vtable : vtables) { String query = "select dmt.virtualColumn, dmt.realColumn from DatabaseMetadataType dmt where dmt.table='" + vtable + "'"; List<Object> tmp = LegacyDAO.executeQuery(query); for (Object obj : tmp) { Object[] dt = (Object[]) obj; vcolumns.add(String.valueOf(dt[0])); columns.add(String.valueOf(dt[0]).concat(" (").concat(String.valueOf(dt[1])).concat(")")); } } } for (Iterator<Object> it = ret.iterator(); it.hasNext() && i++ < Config.MAX_SEARCH_RESULTS;) { List<String> row = new ArrayList<String>(); Object obj = it.next(); if (vtables == null) { if (obj instanceof Object[]) { Object[] ao = (Object[]) obj; for (int j = 0; j < ao.length; j++) { row.add(String.valueOf(ao[j])); } } else { row.add(String.valueOf(obj)); } } else { if (obj instanceof DatabaseMetadataValue) { for (String column : vcolumns) { row.add(DatabaseMetadataUtils.getString((DatabaseMetadataValue) obj, column)); } } else if (obj instanceof Object[]) { for (Object objChild : (Object[]) obj) { if (objChild instanceof DatabaseMetadataValue) { DatabaseMetadataValue dmvChild = (DatabaseMetadataValue) objChild; List<DatabaseMetadataType> types = DatabaseMetadataDAO .findAllTypes(dmvChild.getTable()); for (DatabaseMetadataType emt : types) { for (String column : vcolumns) { if (emt.getVirtualColumn().equals(column)) { row.add(BeanUtils.getProperty(dmvChild, emt.getRealColumn())); } } } } else { row.add(String.valueOf(objChild)); } } } else { row.add("Query result should be instance of DatabaseMetadataValue"); } } results.add(row); } GlobalResult gr = new GlobalResult(); gr.setColumns(columns); gr.setResults(results); gr.setRows(null); gr.setSql(hql); gr.setTime(System.currentTimeMillis() - begin); return gr; } else { GlobalResult gr = new GlobalResult(); int rows = session.createQuery(hql).executeUpdate(); gr.setColumns(null); gr.setResults(null); gr.setRows(rows); gr.setSql(hql); gr.setTime(System.currentTimeMillis() - begin); return gr; } }
From source file:com.jaspersoft.ireport.designer.connection.JRSpringLoadedHibernateConnection.java
License:Open Source License
@Override public void test() throws Exception { try {//w w w . j ava 2 s. com Thread.currentThread().setContextClassLoader(IReportManager.getInstance().getReportClassLoader()); SessionFactory sf = getSessionFactory(); if (sf == null) { JOptionPane.showMessageDialog(Misc.getMainWindow(), //I18n.getString("messages.connectionDialog.noSessionFactoryReturned", "No session factory returned. Check your session factory bean id against the spring configuration.", "Error", JOptionPane.ERROR_MESSAGE); } else { Session hb_session = sf.openSession(); Transaction transaction = hb_session.beginTransaction(); Query q = hb_session.createQuery("select address as address Address as address"); q.setFetchSize(1); java.util.Iterator iterator = q.iterate(); // this is a stupid thing: iterator.next(); String[] aliases = q.getReturnAliases(); Type[] types = q.getReturnTypes(); JOptionPane.showMessageDialog(Misc.getMainWindow(), //I18n.getString("messages.connectionDialog.hibernateConnectionTestSuccessful", "iReport successfully created a Hibernate session factory from your Spring configuration.", "", JOptionPane.INFORMATION_MESSAGE); } } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(Misc.getMainWindow(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } }
From source file:com.jaspersoft.ireport.designer.data.fieldsproviders.hibernate.HQLFieldsReader.java
License:Open Source License
public Vector readFields() throws Exception { prepareQuery();/* w ww . j av a2 s .c om*/ SessionFactory hb_sessionFactory = null; Session hb_session = null; Transaction transaction = null; notScalars.clear(); try { IReportConnection conn = IReportManager.getInstance().getDefaultConnection(); if (!(conn instanceof JRHibernateConnection)) { throw new Exception("No Hibernate connection selected."); } hb_session = ((JRHibernateConnection) conn).createSession(); if (hb_session == null) { throw new Exception("Problem creating the Session object for Hibernate"); } transaction = hb_session.beginTransaction(); Query q = hb_session.createQuery(getQueryString()); Iterator paramIterator = queryParameters.keySet().iterator(); while (paramIterator.hasNext()) { String hqlParamName = "" + paramIterator.next(); setParameter(hb_session, q, hqlParamName, queryParameters.get(hqlParamName)); } q.setFetchSize(1); java.util.Iterator iterator = q.iterate(); // this is a stupid thing: iterator.next(); String[] aliases = q.getReturnAliases(); Type[] types = q.getReturnTypes(); Vector fields = new Vector(); for (int i = 0; i < types.length; ++i) { if (types[i].isComponentType() || types[i].isEntityType()) { // look for alias... String aliasName = null; if (aliases != null && aliases.length > i && !aliases[i].equals(i + "")) { aliasName = aliases[i]; JRDesignField field = new JRDesignField(); field.setName(aliases[i]); Class clazzRT = types[i].getReturnedClass(); if (clazzRT.isPrimitive()) { clazzRT = MethodUtils.getPrimitiveWrapper(clazzRT); } String returnType = clazzRT.getName(); field.setValueClassName(returnType); field.setDescription(aliases[i]); fields.add(field); } // look for fields like for a javabean... java.beans.PropertyDescriptor[] pd = org.apache.commons.beanutils.PropertyUtils .getPropertyDescriptors(types[i].getReturnedClass()); if (aliasName != null) { notScalars.add(new FieldClassWrapper(aliasName, types[i].getReturnedClass().getName())); } else { notScalars.add(types[i].getReturnedClass().getName()); } for (int nd = 0; nd < pd.length; ++nd) { String fieldName = pd[nd].getName(); if (pd[nd].getPropertyType() != null && pd[nd].getReadMethod() != null) { if (fieldName.equals("class")) continue; Class clazzRT = pd[nd].getPropertyType(); if (clazzRT.isPrimitive()) { clazzRT = MethodUtils.getPrimitiveWrapper(clazzRT); } String returnType = clazzRT.getName(); JRDesignField field = new JRDesignField(); field.setName(fieldName); field.setValueClassName(returnType); if (types.length > 1 && aliasName != null) { fieldName = aliasName + "." + fieldName; field.setDescription(fieldName); //Field returned by " +methods[i].getName() + " (real type: "+ returnType +")"); field.setName(fieldName); } fields.add(field); } } } else { String fieldName = types[i].getName(); if (aliases != null && aliases.length > i && !aliases[i].equals("" + i)) fieldName = aliases[i]; Class clazzRT = types[i].getReturnedClass(); if (clazzRT.isPrimitive()) { clazzRT = MethodUtils.getPrimitiveWrapper(clazzRT); } String returnType = clazzRT.getName(); JRDesignField field = new JRDesignField(); field.setName(fieldName); field.setValueClassName(returnType); //field.setDescription(""); fields.add(field); } } /* else { for (int i =0; i<types.length; ++i) { if (aliases != null && aliases.length > 0 && !aliases[0].equals(""+i)) { JRField field = new JRField(aliases[i], types[i].getReturnedClass().getName()); field.setDescription("The whole entity/component object"); fields.add(field); } // out.println(types[i].getName() + " " + types[i].getReturnedClass().getName() + "<br>"); } } */ return fields; } catch (Exception ex) { ex.printStackTrace(); throw ex; } finally { if (transaction != null) try { transaction.rollback(); } catch (Exception ex) { } if (hb_session != null) try { hb_session.close(); } catch (Exception ex) { } } }
From source file:com.mg.jet.birt.report.data.oda.ejbql.Statement.java
License:Open Source License
public void prepare(String query) throws OdaException { Query qry = null; // Test the connection testConnection();/*from w ww .j a v a2s. c o m*/ // holds the column types List<String> arColsType = new ArrayList<String>(); List<String> arCols = new ArrayList<String>(); List<String> arColClass = new ArrayList<String>(); // holds the column names, also used for labels String[] props = null; try { Session hibsession = HibernateUtil.currentSession(); // Create a Hibernate Query query = query.replaceAll("[\\n\\r]+", " "); query = query.trim(); qry = hibsession.createQuery(query); // Get the list of return types from the query Type[] qryReturnTypes = qry.getReturnTypes(); paramNames = Arrays.asList(qry.getNamedParameters()); paramValues = new Object[paramNames.size()]; // When specifing the HQL "from object" the returned type is a // Hibernate EntityType // When the columns are specified the returned values are normal // data types // The first half of this if statment handles the EntityType, the // else handles the // other case. // We are not handling multipe result sets. if (qryReturnTypes.length > 0 && qryReturnTypes[0].isEntityType()) { for (int j = 0; j < qryReturnTypes.length; j++) { // Get the classname and use utility function to retrieve // data types String clsName = qryReturnTypes[j].getName(); // props holds the column names props = HibernateUtil.getHibernateProp(clsName); for (int x = 0; x < props.length; x++) { String propType = HibernateUtil.getHibernatePropTypes(clsName, props[x]); // Verify that the data type is valid if (DataTypes.isValidType(propType)) { arColsType.add(propType); // Only do this on Entity Types so we dont have a // name collision arCols.add(props[x]); arColClass.add(clsName); } else { throw new OdaException( Messages.getString("Statement.SOURCE_DATA_ERROR") + " " + propType); } } } } else { // Extract the column names from the query props = extractColumns(qry.getQueryString()); // Get the return types from the Type[] for (int t = 0; t < qryReturnTypes.length; t++) { // Verify that the data type is valid String propType = qryReturnTypes[t].getName(); if (DataTypes.isValidType(propType)) { arColsType.add(qryReturnTypes[t].getName()); arCols.add(props[t]); } else { throw new OdaException(Messages.getString("Statement.SOURCE_DATA_ERROR") + " " + propType); } } } } catch (OdaException e) { throw e; } catch (Exception e) { throw new OdaException(e); } // this example does not enforce unique column names // Create a new ResultSetMetaData object passing in the column names and // data types // Have to remove . which BIRT does not allow String[] arLabels = (String[]) arCols.toArray(new String[arCols.size()]); for (int j = 0; j < arLabels.length; j++) { arLabels[j] = arLabels[j].replace('.', ':'); } this.resultSetMetaData = new ResultSetMetaData(arLabels, (String[]) arColsType.toArray(new String[arColsType.size()]), arLabels, (String[]) arColClass.toArray(new String[arColClass.size()])); // query is saved for execution this.query = query; }
From source file:com.mg.jet.birt.report.data.oda.ejbql.Statement.java
License:Open Source License
@SuppressWarnings("unchecked") public IResultSet executeQuery() throws OdaException { Type[] qryReturnTypes = null; List<Object> rst = null; try {//from w ww.jav a2 s . co m Session hibsession = HibernateUtil.currentSession(); String qryStr = this.query; qryStr = qryStr.replaceAll("[\\n\\r]+", " "); qryStr.trim(); // Create the Hibernate query, notice that we are using the query // prepared Query qry = hibsession.createQuery(qryStr); for (int i = 0; i < paramNames.size(); i++) { Object paramValue = convertParamValue(hibsession, paramNames.get(i), paramValues[i]); if (paramValue instanceof Object[]) qry.setParameterList(paramNames.get(i), (Object[]) paramValue); else qry.setParameter(paramNames.get(i), paramValue); } if (maxRows != 0) qry.setMaxResults(maxRows); // use the query list method to return the resuls in a List object rst = qry.list(); qryReturnTypes = qry.getReturnTypes(); } catch (Exception e) { throw new OdaException(e); } // create a new ResultSet Ojbect passing in the row set and the meta // data and the // Hibernate query return types return new ResultSet(rst, getMetaData(), qryReturnTypes); }
From source file:com.openkm.servlet.admin.DatabaseQueryServlet.java
License:Open Source License
/** * Execute hibernate sentence/*ww w.j a v a 2s. c om*/ */ @SuppressWarnings("unchecked") private DbQueryGlobalResult executeHQL(Session session, String hql, boolean showSql, List<String> vtables) throws HibernateException, DatabaseException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { long begin = System.currentTimeMillis(); if (hql.toUpperCase().startsWith("SELECT") || hql.toUpperCase().startsWith("FROM")) { Query q = session.createQuery(hql); List<Object> ret = q.list(); List<String> columns = new ArrayList<String>(); List<String> vcolumns = new ArrayList<String>(); List<List<String>> results = new ArrayList<List<String>>(); Type[] rt = q.getReturnTypes(); int i = 0; if (vtables == null) { for (i = 0; i < rt.length; i++) { columns.add(rt[i].getName()); } } else { for (String vtable : vtables) { String query = "select dmt.virtualColumn, dmt.realColumn from DatabaseMetadataType dmt where dmt.table='" + vtable + "'"; List<Object> tmp = LegacyDAO.executeQuery(query); for (Object obj : tmp) { Object[] dt = (Object[]) obj; vcolumns.add(String.valueOf(dt[0])); columns.add(String.valueOf(dt[0]).concat(" (").concat(String.valueOf(dt[1])).concat(")")); } } } for (Iterator<Object> it = ret.iterator(); it.hasNext() && i++ < Config.MAX_SEARCH_RESULTS;) { List<String> row = new ArrayList<String>(); Object obj = it.next(); if (vtables == null) { if (obj instanceof Object[]) { Object[] ao = (Object[]) obj; for (int j = 0; j < ao.length; j++) { row.add(String.valueOf(ao[j])); } } else { row.add(String.valueOf(obj)); } } else { if (obj instanceof DatabaseMetadataValue) { DatabaseMetadataValue dmv = (DatabaseMetadataValue) obj; row.add(String.valueOf(dmv.getId())); for (String column : vcolumns) { row.add(DatabaseMetadataUtils.getString(dmv, column)); } } else if (obj instanceof Object[]) { for (Object objChild : (Object[]) obj) { if (objChild instanceof DatabaseMetadataValue) { DatabaseMetadataValue dmvChild = (DatabaseMetadataValue) objChild; List<DatabaseMetadataType> types = DatabaseMetadataDAO .findAllTypes(dmvChild.getTable()); for (DatabaseMetadataType emt : types) { for (String column : vcolumns) { if (emt.getVirtualColumn().equals(column)) { row.add(BeanUtils.getProperty(dmvChild, emt.getRealColumn())); } } } } else { row.add(String.valueOf(objChild)); } } } else { row.add("Query result should be instance of DatabaseMetadataValue"); } } results.add(row); } DbQueryGlobalResult gr = new DbQueryGlobalResult(); gr.setColumns(columns); gr.setResults(results); gr.setRows(null); gr.setSql(hql); gr.setExtra(showSql ? HibernateUtil.toSql(hql) : null); gr.setTime(System.currentTimeMillis() - begin); return gr; } else { DbQueryGlobalResult gr = new DbQueryGlobalResult(); int rows = session.createQuery(hql).executeUpdate(); gr.setColumns(null); gr.setResults(null); gr.setRows(rows); gr.setSql(hql); gr.setTime(System.currentTimeMillis() - begin); return gr; } }
From source file:com.qcadoo.model.internal.HibernateServiceImpl.java
License:Open Source License
@Override public InternalDataDefinition resolveDataDefinition(final Query query) { return resolveDataDefinition(query.getReturnTypes(), query.getReturnAliases()); }
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 w ww . j ava2 s. c om 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; } }; }
From source file:com.wavemaker.runtime.data.task.AbstractReadTask.java
License:Open Source License
protected Object runQuery(Query query, boolean singleResult, String dbName) { if (singleResult) { return query.uniqueResult(); } else {/*from w w w . j a v a 2 s . co m*/ List<?> rs = query.list(); SessionFactory sessFact = getSessionFactory(dbName); Type[] returnTypes = query.getReturnTypes(); Class<?> returnedClass = returnTypes[0].getReturnedClass(); String[] propertyNames = sessFact.getClassMetadata(returnedClass).getPropertyNames(); Type[] propertyTypes = sessFact.getClassMetadata(returnedClass).getPropertyTypes(); ObjectAccess oa = ObjectAccess.getInstance(); // // To eliminate possible duplicates and construct a new list // with orders preserved for the final results // Iterator<?> rsItr = rs.iterator(); List<Object> finalResultSet = new ArrayList<Object>(); while (rsItr.hasNext()) { Object obj = rsItr.next(); if (finalResultSet.contains(obj)) { continue; } for (int i = 0; i < propertyTypes.length; i++) { if (propertyTypes[i].getName().contains("lob") || propertyTypes[i].getName().toLowerCase().contains("binary")) { oa.setProperty(obj, propertyNames[i], null); } } finalResultSet.add(obj); } return finalResultSet; } }
From source file:com.wavemaker.runtime.data.task.CheckQueryTask.java
License:Open Source License
private void checkQueryReturnAliases(Query query) { if (query.getReturnAliases() == null) { return;/*from w w w . ja v a 2 s . c o m*/ } Collection<String> upperCaseAliases = new ArrayList<String>(); Collection<String> illegalIdentifiers = new ArrayList<String>(); Type[] types = query.getReturnTypes(); List<String> names = DataServiceUtils.getColumnNames(types.length, Arrays.asList(query.getReturnAliases())); for (String name : names) { if (Character.isUpperCase(name.charAt(0))) { upperCaseAliases.add(name); } if (!StringUtils.isValidJavaIdentifier(name)) { illegalIdentifiers.add(name); } } if (!upperCaseAliases.isEmpty()) { throw new DataServiceQueryException("Query return aliases cannot start with upper-case letters: " + ObjectUtils.toString(upperCaseAliases)); } if (!illegalIdentifiers.isEmpty()) { throw new DataServiceQueryException("Query return aliases must be legal java identifiers: " + ObjectUtils.toString(illegalIdentifiers)); } }