package net.techreadiness.batch.device; import javax.inject.Inject; import javax.inject.Named; import javax.persistence.EntityManager; import javax.persistence.Query; import javax.persistence.TypedQuery; import net.techreadiness.persistence.domain.DeviceDO; import net.techreadiness.service.ServiceContext; import org.springframework.batch.item.database.orm.JpaQueryProvider; import org.springframework.context.annotation.Scope; @Named @Scope("prototype") public class DeviceExportQueryProvider implements JpaQueryProvider { private EntityManager entityManager; @Inject private ServiceContext serviceContext; @Override public Query createQuery() { StringBuilder sb = new StringBuilder(); sb.append("select d from DeviceDO d "); sb.append("join d.org o "); sb.append("join o.orgTrees ot "); sb.append("where ot.ancestorOrg.orgId = :orgId"); TypedQuery<DeviceDO> query = entityManager.createQuery(sb.toString(), DeviceDO.class); query.setParameter("orgId", serviceContext.getOrgId()); return query; } @Override public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } }