/** * Create a new NULL specification for an Association. * * @param association an Association * * @return a new NULL specification for an Association. */ public static <T> AssociationNullSpecification<T> isNull( Association<T> association ) { return new AssociationNullSpecification<>( association( association ) ); }
/** * Create a new NOT NULL specification for an Association. * * @param association an Association * * @return a new NOT NULL specification for an Association. */ public static <T> AssociationNotNullSpecification<T> isNotNull( Association<T> association ) { return new AssociationNotNullSpecification<>( association( association ) ); }
/** * Create a new EQUALS specification for an Association. * * @param association an Association * @param value its value * * @return a new EQUALS specification for an Association. */ public static <T> EqSpecification<String> eq( Association<T> association, T value ) { return new EqSpecification<>( new PropertyFunction<String>( null, association( association ), null, null, IDENTITY_METHOD ), value.toString() ); }
/** * Create a Query Template using the given mixin class and association. * * @param <T> the type of the template * @param mixinType a class declaring the type of the template * @param association an association * * @return a new Query Template */ public static <T> T templateFor( final Class<T> mixinType, Association<?> association ) { NullArgumentException.validateNotNull( "Mixin class", mixinType ); NullArgumentException.validateNotNull( "Association", association ); return mixinType.cast( Proxy.newProxyInstance( mixinType.getClassLoader(), array( mixinType ), new TemplateHandler<T>( null, association( association ), null, null ) ) ); }