Java 类org.hibernate.annotations.OptimisticLock 实例源码

项目:screensaver    文件:AnnotationType.java   
/**
 * Get the set of annotation values for this annotation type
 * @return the set of annotation values for this annotation type
 */
@OneToMany(fetch=FetchType.LAZY,
           cascade={ CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE },
           mappedBy="annotationType")
@ToMany(hasNonconventionalMutation=true /* model unit tests don't handle Maps yet, tested in AnnotationTypeTest#testAnnotationValues */)             
@MapKey(name="reagent")
@OptimisticLock(excluded=true)
@org.hibernate.annotations.Cascade(value={org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE})
// removing, as this inconveniently forces us to access all reagents before looking for them in the map collection  @org.hibernate.annotations.LazyCollection(LazyCollectionOption.EXTRA)
public Map<Reagent,AnnotationValue> getAnnotationValues()
{
  return _values;
}
项目:lams    文件:PropertyBinder.java   
public Property makeProperty() {
    validateMake();
    LOG.debugf( "Building property %s", name );
    Property prop = new Property();
    prop.setName( name );
    prop.setNodeName( name );
    prop.setValue( value );
    prop.setLazy( lazy );
    prop.setCascade( cascade );
    prop.setPropertyAccessorName( accessType.getType() );

    if ( property != null ) {
        prop.setValueGenerationStrategy( determineValueGenerationStrategy( property ) );
    }

    NaturalId naturalId = property != null ? property.getAnnotation( NaturalId.class ) : null;
    if ( naturalId != null ) {
        if ( ! entityBinder.isRootEntity() ) {
            throw new AnnotationException( "@NaturalId only valid on root entity (or its @MappedSuperclasses)" );
        }
        if ( ! naturalId.mutable() ) {
            updatable = false;
        }
        prop.setNaturalIdentifier( true );
    }

    // HHH-4635 -- needed for dialect-specific property ordering
    Lob lob = property != null ? property.getAnnotation( Lob.class ) : null;
    prop.setLob( lob != null );

    prop.setInsertable( insertable );
    prop.setUpdateable( updatable );

    // this is already handled for collections in CollectionBinder...
    if ( Collection.class.isInstance( value ) ) {
        prop.setOptimisticLocked( ( (Collection) value ).isOptimisticLocked() );
    }
    else {
        final OptimisticLock lockAnn = property != null
                ? property.getAnnotation( OptimisticLock.class )
                : null;
        if ( lockAnn != null ) {
            //TODO this should go to the core as a mapping validation checking
            if ( lockAnn.excluded() && (
                    property.isAnnotationPresent( javax.persistence.Version.class )
                            || property.isAnnotationPresent( Id.class )
                            || property.isAnnotationPresent( EmbeddedId.class ) ) ) {
                throw new AnnotationException(
                        "@OptimisticLock.exclude=true incompatible with @Id, @EmbeddedId and @Version: "
                                + StringHelper.qualify( holder.getPath(), name )
                );
            }
        }
        final boolean isOwnedValue = !isToOneValue( value ) || insertable; // && updatable as well???
        final boolean includeInOptimisticLockChecks = ( lockAnn != null )
                ? ! lockAnn.excluded()
                : isOwnedValue;
        prop.setOptimisticLocked( includeInOptimisticLockChecks );
    }

    LOG.tracev( "Cascading {0} with {1}", name, cascade );
    this.mappingProperty = prop;
    return prop;
}