All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.amattioli.dominate.hibernate.specifications.HqlCollectionSpecification Maven / Gradle / Ivy

The newest version!
package it.amattioli.dominate.hibernate.specifications;

import static it.amattioli.dominate.hibernate.specifications.HqlUtils.hqlPropertyName;
import static it.amattioli.dominate.hibernate.specifications.HqlUtils.normalizedPropertyName;

import org.hibernate.Query;

import it.amattioli.dominate.Entity;
import it.amattioli.dominate.specifications.Assembler;
import it.amattioli.dominate.specifications.CollectionSpecification;

public class HqlCollectionSpecification> extends CollectionSpecification {

	public HqlCollectionSpecification() {
		super();
	}

	public HqlCollectionSpecification(String propertyName) {
		super(propertyName);
	}

	@Override
	public boolean itselfSupportsAssembler(Assembler assembler) {
		return assembler instanceof HqlAssembler;
	}

	@Override
	public void itselfAssembleQuery(Assembler assembler) {
		addHqlCondition((HqlAssembler)assembler);
		setHqlParam((HqlAssembler)assembler);
	}
	
	public void addHqlCondition(HqlAssembler assembler) {
		if (wasSet()) {	
			HqlAssembler hqlAssembler = (HqlAssembler)assembler;
			hqlAssembler.newCriteria();
			hqlAssembler.append(":" + normalizedPropertyName(getPropertyName()) + " in elements");
			hqlAssembler.append("("+hqlPropertyName(getPropertyName())+")");
		}
	}
	
	public void setHqlParam(HqlAssembler assembler) {
		if (wasSet()) {
	    	assembler.addParameter(new HqlAssembler.ParameterSetter() {
	
				@Override
				public void setParameter(Query query) {
					query.setParameter(normalizedPropertyName(getPropertyName()), getValue());
				}
	    		
	    	});
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy