package io.oasp.module.jpa.dataaccess.base; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.hibernate.Query; import org.springframework.beans.factory.FactoryBean; /** * ProductWriter allows to get named query from resource NamedQueries.xml. * It is used for example in job to get sql for JdbcCursorItemReader. * */ public class NamedQueryFactoryBean implements FactoryBean<String> { private EntityManager entityManager; private String queryName; /** * {@inheritDoc} */ @Override public String getObject() throws Exception { return this.entityManager.createNamedQuery(this.queryName).unwrap(Query.class).getQueryString(); } /** * {@inheritDoc} */ @Override public Class<?> getObjectType() { return String.class; } /** * {@inheritDoc} */ @Override public boolean isSingleton() { return false; } /** * @param entityManager the entityManager to set */ @PersistenceContext public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } /** * @param queryName the queryName to set */ public void setQueryName(String queryName) { this.queryName = queryName; } }