/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.hql.spi.id.inline; import java.util.List; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.hql.internal.ast.HqlSqlWalker; import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy; import org.hibernate.sql.Delete; /** * Inline bulk-id delete handler that uses multiple identifier OR clauses. * * @author Vlad Mihalcea */ public class InlineIdsIdsOrClauseDeleteHandlerImpl extends AbstractInlineIdsDeleteHandlerImpl implements MultiTableBulkIdStrategy.DeleteHandler { public InlineIdsIdsOrClauseDeleteHandlerImpl( SessionFactoryImplementor factory, HqlSqlWalker walker) { super( factory, walker ); } @Override protected IdsClauseBuilder newIdsClauseBuilder(List<Object[]> ids) { return new InlineIdsOrClauseBuilder( dialect(), getTargetedQueryable().getIdentifierType(), factory().getTypeResolver(), getTargetedQueryable().getIdentifierColumnNames(), ids ); } protected Delete generateDelete( String tableName, String[] columnNames, String idSubselect, String comment) { final Delete delete = new Delete() .setTableName( tableName ) .setWhere(idSubselect); if ( factory().getSessionFactoryOptions().isCommentsEnabled() ) { delete.setComment( comment ); } return delete; } }