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

📄 collectiontype.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	 */	public abstract PersistentCollection wrap(SessionImplementor session, Object collection);	/**	 * Note: return true because this type is castable to <tt>AssociationType</tt>. Not because	 * all collections are associations.	 */	public boolean isAssociationType() {		return true;	}	public ForeignKeyDirection getForeignKeyDirection() {		return ForeignKeyDirection.FOREIGN_KEY_TO_PARENT;	}	/**	 * Get the key value from the owning entity instance, usually the identifier, but might be some	 * other unique key, in the case of property-ref	 */	public Serializable getKeyOfOwner(Object owner, SessionImplementor session) {				EntityEntry e = session.getPersistenceContext().getEntry( owner );		if ( e == null ) return null; // This just handles a particular case of component									  // projection, perhaps get rid of it and throw an exception				if ( foreignKeyPropertyName == null ) {			return e.getId();		}		else {			// TODO: at the point where we are resolving collection references, we don't			// know if the uk value has been resolved (depends if it was earlier or			// later in the mapping document) - now, we could try and use e.getStatus()			// to decide to semiResolve(), trouble is that initializeEntity() reuses			// the same array for resolved and hydrated values			Object id = e.getLoadedValue( foreignKeyPropertyName );			// NOTE VERY HACKISH WORKAROUND!!			Type keyType = getPersister( session ).getKeyType();			if ( !keyType.getReturnedClass().isInstance( id ) ) {				id = (Serializable) keyType.semiResolve(					e.getLoadedValue( foreignKeyPropertyName ),					session,					owner );			}			return (Serializable) id;		}	}	public Object hydrate(ResultSet rs, String[] name, SessionImplementor session, Object owner) {		// can't just return null here, since that would		// cause an owning component to become null		return NOT_NULL_COLLECTION;	}	public Object resolve(Object value, SessionImplementor session, Object owner)			throws HibernateException {				return resolveKey( getKeyOfOwner( owner, session ), session, owner );	}		private Object resolveKey(Serializable key, SessionImplementor session, Object owner) {		// if (key==null) throw new AssertionFailure("owner identifier unknown when re-assembling		// collection reference");		return key == null ? null : // TODO: can this case really occur??			getCollection( key, session, owner );	}	public Object semiResolve(Object value, SessionImplementor session, Object owner)			throws HibernateException {		throw new UnsupportedOperationException(			"collection mappings may not form part of a property-ref" );	}	public boolean isArrayType() {		return false;	}	public boolean useLHSPrimaryKey() {		return foreignKeyPropertyName == null;	}	public String getRHSUniqueKeyPropertyName() {		return null;	}	public Joinable getAssociatedJoinable(SessionFactoryImplementor factory)			throws MappingException {		return (Joinable) factory.getCollectionPersister( role );	}	public boolean isModified(Object old, Object current, SessionImplementor session) throws HibernateException {		return false;	}	public String getAssociatedEntityName(SessionFactoryImplementor factory)			throws MappingException {		try {						QueryableCollection collectionPersister = (QueryableCollection) factory				.getCollectionPersister( role );						if ( !collectionPersister.getElementType().isEntityType() ) {				throw new MappingException( "collection was not an association: "					+ collectionPersister.getRole() );			}						return collectionPersister.getElementPersister().getEntityName();					}		catch (ClassCastException cce) {			throw new MappingException( "collection role is not queryable " + role );		}	}	/**	 * Replace the elements of a collection with the elements of another collection	 */	public Object replaceElements(Object original, Object target, Object owner, Map copyCache,			SessionImplementor session) throws HibernateException {		// TODO: does not work for EntityMode.DOM4J yet!		java.util.Collection result = (java.util.Collection) target;		result.clear();		// copy elements into newly empty target collection		Type elemType = getElementType( session.getFactory() );		Iterator iter = ( (java.util.Collection) original ).iterator();		while ( iter.hasNext() ) {			result.add( elemType.replace( iter.next(), null, session, owner, copyCache ) );		}		return result;	}	/**	 * Instantiate an empty instance of the "underlying" collection (not a wrapper)	 */	public abstract Object instantiate(Object original);	public Object replace(final Object original, final Object target,			final SessionImplementor session, final Object owner, final Map copyCache)			throws HibernateException {		if ( original == null ) return null;		if ( !Hibernate.isInitialized( original ) ) return target;		if ( original == target ) return target; // is this really a Good Thing?		Object result = target == null ? instantiate( original ) : target;		return replaceElements( original, result, owner, copyCache, session );	}	/**	 * Get the Hibernate type of the collection elements	 */	public final Type getElementType(SessionFactoryImplementor factory) throws MappingException {		return factory.getCollectionPersister( getRole() ).getElementType();	}	public String toString() {		return getClass().getName() + '(' + getRole() + ')';	}	public String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters)			throws MappingException {		return getAssociatedJoinable( factory ).filterFragment( alias, enabledFilters );	}	/**	 * instantiate a collection wrapper (called when loading an object)	 */	public Object getCollection(Serializable key, SessionImplementor session, Object owner)			throws HibernateException {		CollectionPersister persister = getPersister( session );		final PersistenceContext persistenceContext = session.getPersistenceContext();		final EntityMode entityMode = session.getEntityMode();		if (entityMode==EntityMode.DOM4J && !isEmbeddedInXML) {			return UNFETCHED_COLLECTION;		}				// check if collection is currently being loaded		PersistentCollection collection = persistenceContext			.getCollectionLoadContext()			.getLoadingCollection( persister, key, entityMode );				if ( collection == null ) {						// check if it is already completely loaded, but unowned			collection = persistenceContext.useUnownedCollection( new CollectionKey(persister, key, entityMode) );						if (collection==null) {				// create a new collection wrapper, to be initialized later				collection = instantiate( session, persister, key );				collection.setOwner(owner);					persistenceContext.addUninitializedCollection( collection, persister, key, entityMode );					// some collections are not lazy:				if ( initializeImmediately( entityMode ) ) {					session.initializeCollection( collection, false );				}				else if ( !persister.isLazy() ) {					persistenceContext.addNonLazyCollection( collection );				}					if ( hasHolder( entityMode ) ) {					session.getPersistenceContext().addCollectionHolder( collection );				}							}					}				collection.setOwner(owner);		return collection.getValue();	}	public boolean hasHolder(EntityMode entityMode) {		return entityMode == EntityMode.DOM4J;	}	protected boolean initializeImmediately(EntityMode entityMode) {		return entityMode == EntityMode.DOM4J;	}	public String getLHSPropertyName() {		return foreignKeyPropertyName;	}	public boolean isXMLElement() {		return true;	}	public Object fromXMLNode(Node xml, Mapping factory) throws HibernateException {		return xml;	}	public void setToXMLNode(Node node, Object value, SessionFactoryImplementor factory) 	throws HibernateException {		if ( !isEmbeddedInXML ) {			node.detach();		}		else {			replaceNode( node, (Element) value );		}	}		public boolean isAlwaysDirtyChecked() {		return true; 		// because we sometimes need to incremement version number of owner		// and also because of how assemble/disassemble is implemented for uks	}}

⌨️ 快捷键说明

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