Package org.hibernate.dialect

Examples of org.hibernate.dialect.Dialect


  private static Dialect determineDialect() {
    try {
      return Dialect.getDialect();
    }
    catch( Exception e ) {
      return new Dialect() {
      };
    }
  }
View Full Code Here


    this( propertyName, matchMode.toMatchString(value) );
  }

  public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
  throws HibernateException {
    Dialect dialect = criteriaQuery.getFactory().getDialect();
    String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName);
    if (columns.length!=1) throw new HibernateException("ilike may only be used with single-column properties");
    if ( dialect instanceof PostgreSQLDialect ) {
      return columns[0] + " ilike ?";
    }
    else {
      return dialect.getLowercaseFunction() + '(' + columns[0] + ") like ?";
    }

    //TODO: get SQL rendering out of this package!
  }
View Full Code Here

    return new int[ getPropertySpan() ];
  }

  protected String generateSubquery(PersistentClass model, Mapping mapping) {

    Dialect dialect = getFactory().getDialect();
    Settings settings = getFactory().getSettings();
   
    if ( !model.hasSubclasses() ) {
      return model.getTable().getQualifiedName(
          dialect,
          settings.getDefaultCatalogName(),
          settings.getDefaultSchemaName()
        );
    }

    HashSet columns = new HashSet();
    Iterator titer = model.getSubclassTableClosureIterator();
    while ( titer.hasNext() ) {
      Table table = (Table) titer.next();
      if ( !table.isAbstractUnionTable() ) {
        Iterator citer = table.getColumnIterator();
        while ( citer.hasNext() ) columns.add( citer.next() );
      }
    }

    StringBuffer buf = new StringBuffer()
      .append("( ");

    Iterator siter = new JoinedIterator(
      new SingletonIterator(model),
      model.getSubclassIterator()
    );

    while ( siter.hasNext() ) {
      PersistentClass clazz = (PersistentClass) siter.next();
      Table table = clazz.getTable();
      if ( !table.isAbstractUnionTable() ) {
        //TODO: move to .sql package!!
        buf.append("select ");
        Iterator citer = columns.iterator();
        while ( citer.hasNext() ) {
          Column col = (Column) citer.next();
          if ( !table.containsColumn(col) ) {
            int sqlType = col.getSqlTypeCode(mapping);
            buf.append( dialect.getSelectClauseNullString(sqlType) )
              .append(" as ");
          }
          buf.append( col.getName() );
          buf.append(", ");
        }
        buf.append( clazz.getSubclassId() )
          .append(" as clazz_");
        buf.append(" from ")
          .append( table.getQualifiedName(
              dialect,
              settings.getDefaultCatalogName(),
              settings.getDefaultSchemaName()
          ) );
        buf.append(" union ");
        if ( dialect.supportsUnionAll() ) {
          buf.append("all ");
        }
      }
    }
   
    if ( buf.length() > 2 ) {
      //chop the last union (all)
      buf.setLength( buf.length() - ( dialect.supportsUnionAll() ? 11 : 7 ) );
    }

    return buf.append(" )").toString();
  }
View Full Code Here

        && ( ! hasDynamicFilterParam( sqlFragment ) )
        && ( ! ( hasCollectionFilterParam( sqlFragment ) ) ) ) {
      return;
    }

    Dialect dialect = walker.getSessionFactoryHelper().getFactory().getDialect();
    String symbols = new StringBuffer().append( ParserHelper.HQL_SEPARATORS )
        .append( dialect.openQuote() )
        .append( dialect.closeQuote() )
        .toString();
    StringTokenizer tokens = new StringTokenizer( sqlFragment, symbols, true );
    StringBuffer result = new StringBuffer();

    while ( tokens.hasMoreTokens() ) {
View Full Code Here

      throw new HibernateException( "Connection cannot be null when 'hibernate.dialect' not set" );
    }

    try {
      final DatabaseMetaData databaseMetaData = connection.getMetaData();
      final Dialect dialect = DIALECT_RESOLVERS.resolveDialect( databaseMetaData );

      if ( dialect == null ) {
        throw new HibernateException(
            "Unable to determine Dialect to use [name=" + databaseMetaData.getDatabaseProductName() +
                ", majorVersion=" + databaseMetaData.getDatabaseMajorVersion() +
View Full Code Here

  public Dialect resolveDialect(DatabaseMetaData metaData) {
    Iterator i = resolvers.iterator();
    while ( i.hasNext() ) {
      final DialectResolver resolver = ( DialectResolver ) i.next();
      try {
        Dialect dialect = resolver.resolveDialect( metaData );
        if ( dialect != null ) {
          return dialect;
        }
      }
      catch ( JDBCConnectionException e ) {
View Full Code Here

          final boolean scroll,
          final SessionImplementor session) throws SQLException, HibernateException {

    queryParameters.processFilters( getSQLString(), session );
    String sql = queryParameters.getFilteredSQL();
    final Dialect dialect = getFactory().getDialect();
    final RowSelection selection = queryParameters.getRowSelection();
    boolean useLimit = useLimit( selection, dialect );
    boolean hasFirstRow = getFirstRow( selection ) > 0;
    boolean useOffset = hasFirstRow && useLimit && dialect.supportsLimitOffset();
    boolean callable = queryParameters.isCallable();
   
    boolean useScrollableResultSetToSkip = hasFirstRow &&
        !useOffset &&
        getFactory().getSettings().isScrollableResultSetsEnabled();
    ScrollMode scrollMode = scroll ? queryParameters.getScrollMode() : ScrollMode.SCROLL_INSENSITIVE;

    if ( useLimit ) {
      sql = dialect.getLimitString(
          sql.trim(), //use of trim() here is ugly?
          useOffset ? getFirstRow(selection) : 0,
          getMaxOrLimit(selection, dialect)
        );
    }

    sql = preprocessSQL( sql, queryParameters, dialect );
   
    PreparedStatement st = null;
   
    if (callable) {
      st = session.getBatcher()
        .prepareCallableQueryStatement( sql, scroll || useScrollableResultSetToSkip, scrollMode );
    }
    else {
      st = session.getBatcher()
        .prepareQueryStatement( sql, scroll || useScrollableResultSetToSkip, scrollMode );
    }
       

    try {

      int col = 1;
      //TODO: can we limit stored procedures ?!
      if ( useLimit && dialect.bindLimitParametersFirst() ) {
        col += bindLimitParameters( st, col, selection );
      }
      if (callable) {
        col = dialect.registerResultSetOutParameter( (CallableStatement)st, col );
      }

      col += bindParameterValues( st, queryParameters, col, session );

      if ( useLimit && !dialect.bindLimitParametersFirst() ) {
        col += bindLimitParameters( st, col, selection );
      }

      if ( !useLimit ) {
        setMaxRows( st, selection );
View Full Code Here

   */
  private int bindLimitParameters(
      final PreparedStatement statement,
      final int index,
      final RowSelection selection) throws SQLException {
    Dialect dialect = getFactory().getDialect();
    if ( !dialect.supportsVariableLimit() ) {
      return 0;
    }
    if ( !hasMaxRows( selection ) ) {
      throw new AssertionFailure( "no max results set" );
    }
    int firstRow = getFirstRow( selection );
    int lastRow = getMaxOrLimit( selection, dialect );
    boolean hasFirstRow = firstRow > 0 && dialect.supportsLimitOffset();
    boolean reverse = dialect.bindLimitParametersInReverseOrder();
    if ( hasFirstRow ) {
      statement.setInt( index + ( reverse ? 1 : 0 ), firstRow );
    }
    statement.setInt( index + ( reverse || !hasFirstRow ? 0 : 1 ), lastRow );
    return hasFirstRow ? 2 : 1;
View Full Code Here

          final SessionImplementor session)
  throws SQLException, HibernateException {
 
    ResultSet rs = null;
    try {
      Dialect dialect = getFactory().getDialect();
      if (callable) {
        rs = session.getBatcher().getResultSet( (CallableStatement) st, dialect );
      }
      else {
        rs = session.getBatcher().getResultSet( st );
      }
      rs = wrapResultSetIfEnabled( rs , session );
     
      if ( !dialect.supportsLimitOffset() || !useLimit( selection, dialect ) ) {
        advance( rs, selection );
      }
     
      if ( autodiscovertypes ) {
        autoDiscoverTypes( rs );
View Full Code Here

    boolean metaSupportsScrollable = false;
    boolean metaSupportsGetGeneratedKeys = false;
    boolean metaSupportsBatchUpdates = false;
    boolean metaReportsDDLCausesTxnCommit = false;
    boolean metaReportsDDLInTxnSupported = true;
    Dialect dialect = null;

    // 'hibernate.temp.use_jdbc_metadata_defaults' is a temporary magic value.
    // The need for it is intended to be alleviated with future developement, thus it is
    // not defined as an Environment constant...
    //
    // it is used to control whether we should consult the JDBC metadata to determine
    // certain Settings default values; it is useful to *not* do this when the database
    // may not be available (mainly in tools usage).
    boolean useJdbcMetadata = PropertiesHelper.getBoolean( "hibernate.temp.use_jdbc_metadata_defaults", props, true );
    if ( useJdbcMetadata ) {
      try {
        Connection conn = connections.getConnection();
        try {
          DatabaseMetaData meta = conn.getMetaData();
          log.info( "RDBMS: " + meta.getDatabaseProductName() + ", version: " + meta.getDatabaseProductVersion() );
          log.info( "JDBC driver: " + meta.getDriverName() + ", version: " + meta.getDriverVersion() );

          dialect = DialectFactory.buildDialect( props, conn );

          metaSupportsScrollable = meta.supportsResultSetType( ResultSet.TYPE_SCROLL_INSENSITIVE );
          metaSupportsBatchUpdates = meta.supportsBatchUpdates();
          metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit();
          metaReportsDDLInTxnSupported = !meta.dataDefinitionIgnoredInTransactions();
          metaSupportsGetGeneratedKeys = meta.supportsGetGeneratedKeys();
        }
        catch ( SQLException sqle ) {
          log.warn( "Could not obtain connection metadata", sqle );
        }
        finally {
          connections.closeConnection( conn );
        }
      }
      catch ( SQLException sqle ) {
        log.warn( "Could not obtain connection to query metadata", sqle );
        dialect = DialectFactory.buildDialect( props );
      }
      catch ( UnsupportedOperationException uoe ) {
        // user supplied JDBC connections
        dialect = DialectFactory.buildDialect( props );
      }
    }
    else {
      dialect = DialectFactory.buildDialect( props );
    }

    settings.setDataDefinitionImplicitCommit( metaReportsDDLCausesTxnCommit );
    settings.setDataDefinitionInTransactionSupported( metaReportsDDLInTxnSupported );
    settings.setDialect( dialect );

    //use dialect default properties
    final Properties properties = new Properties();
    properties.putAll( dialect.getDefaultProperties() );
    properties.putAll( props );

    // Transaction settings:

    TransactionFactory transactionFactory = createTransactionFactory(properties);
View Full Code Here

TOP

Related Classes of org.hibernate.dialect.Dialect

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.