⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractentityjoinwalker.java

📁 一个Java持久层类库
💻 JAVA
字号:
//$Id: AbstractEntityJoinWalker.java 11081 2007-01-23 16:31:13Z steve.ebersole@jboss.com $package org.hibernate.loader;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.hibernate.FetchMode;import org.hibernate.LockMode;import org.hibernate.MappingException;import org.hibernate.engine.CascadeStyle;import org.hibernate.engine.SessionFactoryImplementor;import org.hibernate.persister.entity.Loadable;import org.hibernate.persister.entity.OuterJoinLoadable;import org.hibernate.sql.JoinFragment;import org.hibernate.sql.Select;import org.hibernate.type.AssociationType;import org.hibernate.util.CollectionHelper;/** * Abstract walker for walkers which begin at an entity (criteria * queries and entity loaders). * * @author Gavin King */public abstract class AbstractEntityJoinWalker extends JoinWalker {	private final OuterJoinLoadable persister;	private final String alias;	public AbstractEntityJoinWalker(OuterJoinLoadable persister, SessionFactoryImplementor factory, Map enabledFilters) {		this( persister, factory, enabledFilters, null );	}	public AbstractEntityJoinWalker(OuterJoinLoadable persister, SessionFactoryImplementor factory, Map enabledFilters, String alias) {		super( factory, enabledFilters );		this.persister = persister;		this.alias = ( alias == null ) ? generateRootAlias( persister.getEntityName() ) : alias;	}	protected final void initAll(		final String whereString,		final String orderByString,		final LockMode lockMode)	throws MappingException {		walkEntityTree( persister, getAlias() );		List allAssociations = new ArrayList();		allAssociations.addAll(associations);		allAssociations.add( new OuterJoinableAssociation(				persister.getEntityType(),				null,				null,				alias,				JoinFragment.LEFT_OUTER_JOIN,				getFactory(),				CollectionHelper.EMPTY_MAP			) );		initPersisters(allAssociations, lockMode);		initStatementString( whereString, orderByString, lockMode);	}	protected final void initProjection(		final String projectionString,		final String whereString,		final String orderByString,		final String groupByString,		final LockMode lockMode)	throws MappingException {		walkEntityTree( persister, getAlias() );		persisters = new Loadable[0];		initStatementString(projectionString, whereString, orderByString, groupByString, lockMode);	}	private void initStatementString(		final String condition,		final String orderBy,		final LockMode lockMode)	throws MappingException {		initStatementString(null, condition, orderBy, "", lockMode);	}	private void initStatementString(			final String projection,			final String condition,			final String orderBy,			final String groupBy,			final LockMode lockMode) throws MappingException {		final int joins = countEntityPersisters( associations );		suffixes = BasicLoader.generateSuffixes( joins + 1 );		JoinFragment ojf = mergeOuterJoins( associations );		Select select = new Select( getDialect() )				.setLockMode( lockMode )				.setSelectClause(						projection == null ?								persister.selectFragment( alias, suffixes[joins] ) + selectString( associations ) :								projection				)				.setFromClause(						getDialect().appendLockHint( lockMode, persister.fromTableFragment( alias ) ) +								persister.fromJoinFragment( alias, true, true )				)				.setWhereClause( condition )				.setOuterJoins(						ojf.toFromFragmentString(),						ojf.toWhereFragmentString() + getWhereFragment()				)				.setOrderByClause( orderBy( associations, orderBy ) )				.setGroupByClause( groupBy );		if ( getFactory().getSettings().isCommentsEnabled() ) {			select.setComment( getComment() );		}		sql = select.toStatementString();	}	protected String getWhereFragment() throws MappingException {		// here we do not bother with the discriminator.		return persister.whereJoinFragment(alias, true, true);	}	/**	 * The superclass deliberately excludes collections	 */	protected boolean isJoinedFetchEnabled(AssociationType type, FetchMode config, CascadeStyle cascadeStyle) {		return isJoinedFetchEnabledInMapping(config, type);	}	public abstract String getComment();	protected final Loadable getPersister() {		return persister;	}	protected final String getAlias() {		return alias;	}	public String toString() {		return getClass().getName() + '(' + getPersister().getEntityName() + ')';	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -