Java Code Examples for javax.persistence.OneToOne#fetch()

The following examples show how to use javax.persistence.OneToOne#fetch() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AnnotationBinder.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
protected static void defineFetchingStrategy(ToOne toOne, XProperty property) {
	LazyToOne lazy = property.getAnnotation( LazyToOne.class );
	Fetch fetch = property.getAnnotation( Fetch.class );
	ManyToOne manyToOne = property.getAnnotation( ManyToOne.class );
	OneToOne oneToOne = property.getAnnotation( OneToOne.class );
	FetchType fetchType;
	if ( manyToOne != null ) {
		fetchType = manyToOne.fetch();
	}
	else if ( oneToOne != null ) {
		fetchType = oneToOne.fetch();
	}
	else {
		throw new AssertionFailure(
				"Define fetch strategy on a property not annotated with @OneToMany nor @OneToOne"
		);
	}
	if ( lazy != null ) {
		toOne.setLazy( !( lazy.value() == LazyToOneOption.FALSE ) );
		toOne.setUnwrapProxy( ( lazy.value() == LazyToOneOption.NO_PROXY ) );
	}
	else {
		toOne.setLazy( fetchType == FetchType.LAZY );
		toOne.setUnwrapProxy( false );
	}
	if ( fetch != null ) {
		if ( fetch.value() == org.hibernate.annotations.FetchMode.JOIN ) {
			toOne.setFetchMode( FetchMode.JOIN );
			toOne.setLazy( false );
			toOne.setUnwrapProxy( false );
		}
		else if ( fetch.value() == org.hibernate.annotations.FetchMode.SELECT ) {
			toOne.setFetchMode( FetchMode.SELECT );
		}
		else if ( fetch.value() == org.hibernate.annotations.FetchMode.SUBSELECT ) {
			throw new AnnotationException( "Use of FetchMode.SUBSELECT not allowed on ToOne associations" );
		}
		else {
			throw new AssertionFailure( "Unknown FetchMode: " + fetch.value() );
		}
	}
	else {
		toOne.setFetchMode( getFetchMode( fetchType ) );
	}
}
 
Example 2
Source File: AbstractEntityMetaProvider.java    From katharsis-framework with Apache License 2.0 4 votes vote down vote up
@Override
protected MetaAttribute createAttribute(T metaDataObject, PropertyDescriptor desc) {
	MetaEntityAttribute attr = new MetaEntityAttribute();
	attr.setName(desc.getName());
	attr.setParent(metaDataObject, true);
	if (hasJpaAnnotations(attr)) {
		ManyToMany manyManyAnnotation = attr.getAnnotation(ManyToMany.class);
		ManyToOne manyOneAnnotation = attr.getAnnotation(ManyToOne.class);
		OneToMany oneManyAnnotation = attr.getAnnotation(OneToMany.class);
		OneToOne oneOneAnnotation = attr.getAnnotation(OneToOne.class);
		Version versionAnnotation = attr.getAnnotation(Version.class);
		ElementCollection elemCollectionAnnotation = attr.getAnnotation(ElementCollection.class);

		attr.setVersion(versionAnnotation != null);

		FetchType fetchType = null;
		if (manyManyAnnotation != null) {
			fetchType = manyManyAnnotation.fetch();
		}
		if (oneManyAnnotation != null) {
			fetchType = oneManyAnnotation.fetch();
		}
		if (oneOneAnnotation != null) {
			fetchType = oneOneAnnotation.fetch();
		}

		attr.setAssociation(manyManyAnnotation != null || manyOneAnnotation != null || oneManyAnnotation != null
				|| oneOneAnnotation != null);

		boolean lazyCollection = elemCollectionAnnotation != null
				&& elemCollectionAnnotation.fetch() != FetchType.EAGER;
		boolean lazyAssociation = attr.isAssociation() && (fetchType == null || fetchType == FetchType.LAZY);

		attr.setLazy(lazyCollection || lazyAssociation);
	} else {
		attr.setDerived(true);
	}

	attr.setSortable(true);
	attr.setFilterable(true);

	return attr;
}