Package org.hibernate.envers.internal.tools.query

Examples of org.hibernate.envers.internal.tools.query.Parameters


   * Create query restrictions used to retrieve actual data and deletions that took place at exactly given revision.
   */
  private void createValidAndRemovedDataRestrictions(
      AuditStrategy auditStrategy, String versionsMiddleEntityName,
      QueryBuilder remQb, MiddleComponentData... componentData) {
    final Parameters disjoint = remQb.getRootParameters().addSubParameters( "or" );
    // Restrictions to match all valid rows.
    final Parameters valid = disjoint.addSubParameters( "and" );
    // Restrictions to match all rows deleted at exactly given revision.
    final Parameters removed = disjoint.addSubParameters( "and" );
    createValidDataRestrictions( auditStrategy, versionsMiddleEntityName, remQb, valid, componentData );
    // ee.revision = :revision
    removed.addWhereWithNamedParam( verEntCfg.getRevisionNumberPath(), "=", REVISION_PARAMETER );
    // ee.revision_type = DEL
    removed.addWhereWithNamedParam( getRevisionTypePath(), "=", DEL_REVISION_TYPE_PARAMETER );
  }
View Full Code Here


    qb.addProjection(
        "new list", MIDDLE_ENTITY_ALIAS + ", " + REFERENCED_ENTITY_ALIAS + ", " + INDEX_ENTITY_ALIAS,
        false, false
    );
    // WHERE
    final Parameters rootParameters = qb.getRootParameters();
    // ee.id_ref_ed = e.id_ref_ed
    referencedIdData.getPrefixedMapper().addIdsEqualToQuery(
        rootParameters, eeOriginalIdPropertyPath, referencedIdData.getOriginalMapper(),
        REFERENCED_ENTITY_ALIAS + "." + originalIdPropertyName
    );
View Full Code Here

   */
  private void createValidAndRemovedDataRestrictions(
      GlobalConfiguration globalCfg, AuditStrategy auditStrategy,
      MiddleIdData referencedIdData, String versionsMiddleEntityName,
      QueryBuilder remQb, MiddleComponentData... componentData) {
    final Parameters disjoint = remQb.getRootParameters().addSubParameters( "or" );
    // Restrictions to match all valid rows.
    final Parameters valid = disjoint.addSubParameters( "and" );
    // Restrictions to match all rows deleted at exactly given revision.
    final Parameters removed = disjoint.addSubParameters( "and" );
    final String revisionPropertyPath = verEntCfg.getRevisionNumberPath();
    final String revisionTypePropName = getRevisionTypePath();
    // Excluding current revision, because we need to match data valid at the previous one.
    createValidDataRestrictions(
        globalCfg, auditStrategy, referencedIdData, versionsMiddleEntityName, remQb, valid, false, componentData
    );
    // ee.revision = :revision
    removed.addWhereWithNamedParam( revisionPropertyPath, "=", REVISION_PARAMETER );
    // e.revision = :revision
    removed.addWhereWithNamedParam(
        REFERENCED_ENTITY_ALIAS + "." + revisionPropertyPath,
        false,
        "=",
        REVISION_PARAMETER
    );
    // f.revision = :revision
    removed.addWhereWithNamedParam(
        INDEX_ENTITY_ALIAS + "." + revisionPropertyPath,
        false,
        "=",
        REVISION_PARAMETER
    );
    // ee.revision_type = DEL
    removed.addWhereWithNamedParam( revisionTypePropName, "=", DEL_REVISION_TYPE_PARAMETER );
    // e.revision_type = DEL
    removed.addWhereWithNamedParam(
        REFERENCED_ENTITY_ALIAS + "." + revisionTypePropName,
        false,
        "=",
        DEL_REVISION_TYPE_PARAMETER
    );
    // f.revision_type = DEL
    removed.addWhereWithNamedParam(
        INDEX_ENTITY_ALIAS + "." + revisionTypePropName,
        false,
        "=",
        DEL_REVISION_TYPE_PARAMETER
    );
View Full Code Here

            prefix2
        );
      }
      else {
        // (p1.prop = p2.prop or (p1.prop is null and p2.prop is null))
        Parameters sub1 = parameters.addSubParameters( "or" );
        sub1.addWhere( prefix1 + '.' + propertyName, false, "=", prefix2 + '.' + propertyName, false );
        Parameters sub2 = sub1.addSubParameters( "and" );
        sub2.addNullRestriction( prefix1 + '.' + propertyName, false );
        sub2.addNullRestriction( prefix2 + '.' + propertyName, false );
      }
    }
  }
View Full Code Here

  @Override
  public void addIdsEqualToQuery(Parameters parameters, String prefix1, String prefix2) {
    final List<QueryParameterData> paramDatas = mapToQueryParametersFromId( null );

    final Parameters parametersToUse = getParametersToUse( parameters, paramDatas );

    for ( QueryParameterData paramData : paramDatas ) {
      parametersToUse.addWhere(
          paramData.getProperty( prefix1 ),
          false,
          "=",
          paramData.getProperty( prefix2 ),
          false
View Full Code Here

  @Override
  public void addIdsEqualToQuery(Parameters parameters, String prefix1, IdMapper mapper2, String prefix2) {
    final List<QueryParameterData> paramDatas1 = mapToQueryParametersFromId( null );
    final List<QueryParameterData> paramDatas2 = mapper2.mapToQueryParametersFromId( null );

    final Parameters parametersToUse = getParametersToUse( parameters, paramDatas1 );

    final Iterator<QueryParameterData> paramDataIter1 = paramDatas1.iterator();
    final Iterator<QueryParameterData> paramDataIter2 = paramDatas2.iterator();
    while ( paramDataIter1.hasNext() ) {
      final QueryParameterData paramData1 = paramDataIter1.next();
      final QueryParameterData paramData2 = paramDataIter2.next();

      parametersToUse.addWhere(
          paramData1.getProperty( prefix1 ),
          false,
          "=",
          paramData2.getProperty( prefix2 ),
          false
View Full Code Here

  @Override
  public void addIdEqualsToQuery(Parameters parameters, Object id, String prefix, boolean equals) {
    final List<QueryParameterData> paramDatas = mapToQueryParametersFromId( id );

    final Parameters parametersToUse = getParametersToUse( parameters, paramDatas );

    for ( QueryParameterData paramData : paramDatas ) {
      if ( paramData.getValue() == null ) {
        handleNullValue( parametersToUse, paramData.getProperty( prefix ), equals );
      }
      else {
        parametersToUse.addWhereWithParam(
            paramData.getProperty( prefix ),
            equals ? "=" : "<>",
            paramData.getValue()
        );
      }
View Full Code Here

  @Override
  public void addNamedIdEqualsToQuery(Parameters parameters, String prefix, boolean equals) {
    final List<QueryParameterData> paramDatas = mapToQueryParametersFromId( null );

    final Parameters parametersToUse = getParametersToUse( parameters, paramDatas );

    for ( QueryParameterData paramData : paramDatas ) {
      parametersToUse.addWhereWithNamedParam(
          paramData.getProperty( prefix ),
          equals ? "=" : "<>",
          paramData.getQueryParameterName()
      );
    }
View Full Code Here

  }

  public void addToQuery(
      AuditConfiguration verCfg, AuditReaderImplementor versionsReader, String entityName,
      QueryBuilder qb, Parameters parameters) {
    Parameters orParameters = parameters.addSubParameters( Parameters.OR );

    if ( criterions.size() == 0 ) {
      orParameters.addWhere( "0", false, "=", "1", false );
    }
    else {
      for ( AuditCriterion criterion : criterions ) {
        criterion.addToQuery( verCfg, versionsReader, entityName, qb, orParameters );
      }
View Full Code Here

    );

    CriteriaTools.checkPropertyNotARelation( auditCfg, entityName, propertyName );

    // Make sure our conditions are ANDed together even if the parent Parameters have a different connective
    Parameters subParams = parameters.addSubParameters( Parameters.AND );
    // This will be the aggregated query, containing all the specified conditions
    QueryBuilder subQb = qb.newSubQueryBuilder();

    // Adding all specified conditions both to the main query, as well as to the
    // aggregated one.
    for ( AuditCriterion versionsCriteria : criterions ) {
      versionsCriteria.addToQuery( auditCfg, versionsReader, entityName, qb, subParams );
      versionsCriteria.addToQuery( auditCfg, versionsReader, entityName, subQb, subQb.getRootParameters() );
    }

    // Setting the desired projection of the aggregated query
    switch ( mode ) {
      case MIN:
        subQb.addProjection( "min", propertyName, false );
        break;
      case MAX:
        subQb.addProjection( "max", propertyName, false );
    }

    // Correlating subquery with the outer query by entity id. See JIRA HHH-7827.
    if ( correlate ) {
      final String originalIdPropertyName = auditCfg.getAuditEntCfg().getOriginalIdPropName();
      auditCfg.getEntCfg().get( entityName ).getIdMapper().addIdsEqualToQuery(
          subQb.getRootParameters(),
          subQb.getRootAlias() + "." + originalIdPropertyName,
          qb.getRootAlias() + "." + originalIdPropertyName
      );
    }

    // Adding the constrain on the result of the aggregated criteria
    subParams.addWhere( propertyName, "=", subQb );
  }
View Full Code Here

TOP

Related Classes of org.hibernate.envers.internal.tools.query.Parameters

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.