/*
* 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;
}
}