Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Hibernate OGM, Domain model persistence for NoSQL datastores
   *
   * 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.ogm.type.impl;
  
 

Author(s):
Emmanuel Bernard
 
 public class ManyToOneType extends GridTypeDelegatingToCoreType implements GridType {
 	private final TypeTranslator typeTranslator;
 
 	public ManyToOneType(org.hibernate.type.ManyToOneType typeTypeTranslator typeTranslator) {
 		supertype );
 		this. = type;
 		this. = typeTranslator;
 	}
 
 	public Object nullSafeGet(Tuple rsString[] namesSessionImplementor sessionObject owner)
 			throws HibernateException {
 		return resolvehydratersnamessessionowner ), sessionowner );
 	}
 
 	public Object nullSafeGet(Tuple rsString nameSessionImplementor sessionObject owner)
 			throws HibernateException {
 		return nullSafeGetrsnew String[] {name}, sessionowner );
 	}
 
 	public void nullSafeSet(Tuple resultsetObject valueString[] namesboolean[] settableSessionImplementor session)
 			throws HibernateException {
 		GridType idGridType = getIdGridTypesession );
 		idGridType.nullSafeSetresultsetgetIdentifiervaluesession ), namessettablesession );
 	}
 
 	private GridType getIdGridType(SessionImplementor session) {
 		final Type idType = .getIdentifierOrUniqueKeyTypesession.getFactory() );
 		GridType idGridType = .getTypeidType );
 		return idGridType;
 	}
 
 	public void nullSafeSet(Tuple resultsetObject valueString[] namesSessionImplementor session)
 			throws HibernateException {
 		GridType idGridType = getIdGridTypesession );
 		idGridType.nullSafeSetresultsetgetIdentifiervaluesession ), namessession );
 	}
 
 	public Object hydrate(Tuple rsString[] namesSessionImplementor sessionObject owner)
 			throws HibernateException {
 		// return the (fully resolved) identifier value, but do not resolve
 		// to the actual referenced entity instance
 		// NOTE: the owner of the association is not really the owner of the id!
 		Serializable id = (SerializablegetIdGridTypesession ).nullSafeGetrsnamessessionnull );
 		scheduleBatchLoadIfNeededidsession );
 		return id;
 	}

Register the entity as batch loadable, if enabled Copied from ManyToOne#scheduleBatchLoadIfNeeded
 
 	private void scheduleBatchLoadIfNeeded(Serializable idSessionImplementor sessionthrows MappingException {
 		//cannot batch fetch by unique key (property-ref associations)
 		//FIXME support non-pk unique id
 		if ( //uniqueKeyPropertyName == null &&
 				id != null ) {
 			EntityKey entityKey = session.generateEntityKeyidpersister );
 			if ( !session.getPersistenceContext().containsEntityentityKey ) ) {
 			}
 		}
 	}
 
 	//copied from org.hibernate.type.ManyToOne#getIdentifier()
 	protected final Object getIdentifier(Object valueSessionImplementor sessionthrows HibernateException {
 		//isNotEmbedded copied from EntityType#isNotEmbedded
		boolean isNotEmbedded = isNotEmbeddedsession );
		if ( isNotEmbedded ) {
			return value;
		}
		final String associatedEntityName = .getAssociatedEntityName();
			return ForeignKeys.getEntityIdentifierIfNotUnsavedassociatedEntityNamevaluesession ); //tolerates nulls
		}
		else if ( value == null ) {
			return null;
		}
		else {
			//FIXME get access to uniqueKeyPropertyName from somewhere :/
//			EntityPersister entityPersister = session.getFactory().getEntityPersister( associatedEntityName );
//			Object propertyValue = entityPersister.getPropertyValue( value, uniqueKeyPropertyName, session.getEntityMode() );
//			// We now have the value of the property-ref we reference.  However,
//			// we need to dig a little deeper, as that property might also be
//			// an entity type, in which case we need to resolve its identitifier
//			Type type = entityPersister.getPropertyType( uniqueKeyPropertyName );
//			if ( type.isEntityType() ) {
//				propertyValue = ( ( EntityType ) type ).getIdentifier( propertyValue, session );
//			}
//
//			return propertyValue;
			throw new NotYetImplementedException"@ManyToOne using a non-pk unique key not yet supported by OGM");
		}
	}
	protected boolean isNotEmbedded(SessionImplementor session) {
		return false;
	}
New to GrepCode? Check out our FAQ X