[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] org.hibernate.criterion.Example equivalent in Eclipselink

Here are some snippets that might be useful to you, good luck on your quest!

Templated selectAll:
	public <T> List<T> selectAll(Class<T> clazz, String orderClause) {
		if (orderClause.contains(",")) {
			orderClause = orderClause.replaceAll("\\s", "");
			String[] orderbys = orderClause.split(",");
			orderClause = "";
			for (int i=0;i<orderbys.length;i++) {
				orderClause += "em." + orderbys[i];
				if (i < orderbys.length - 1)
					orderClause += ", ";
			}
		} else {
			orderClause = "em." + orderClause;
		}
		Query query = getEntityManager().createQuery("SELECT em FROM " +
getClassName(clazz) + " em ORDER BY " + orderClause);

		return query.getResultList();
	}



Find Fresh: Guarantees you're getting the freshest entity out of the
DB (useful for crud)

    public <T> T findFresh(Class<T> entityClass, Object primaryKey) {
    	T result =  getEntityManager().find(entityClass, primaryKey);
    	if(result == null)
    		return null;

    	getEntityManager().refresh(result);
    	return result;
    }



Get a named query results:
	public <T> List<T> getNamedQuery(Class<T> entityClass, String
name,Object...binds)
		{
			Query query = getEntityManager().createNamedQuery(name);


			for (int i = 0; i < binds.length; i++) {
				Object tmp = binds[i];
				query.setParameter(i+1,tmp);
			}

		    return (List<T>) getNamedQuery(name,binds);
		}

./tch



On Mon, Jul 28, 2008 at 10:28 AM, Gaurav Malhotra
<gaurav.malhotra@xxxxxxxxxx> wrote:
>
> Thanks for the reply
>
> I achieved this using
>
>        public List<T> findByExample(T exampleCriteria) {
>                final T t = exampleCriteria;
>                List<T> list = (List<T>) getJpaTemplate().execute(new JpaCallback() {
>                        public Object doInJpa(javax.persistence.EntityManager em)
>                                        throws javax.persistence.PersistenceException {
>                                final ReadAllQuery query  = new ReadAllQuery(t.getClass());
>                                query.useCollectionClass(LinkedList.class);
>                                query .setExampleObject(t);
>                                List<T> results = (List<T>) ((Session)
> em.getDelegate()).executeQuery(query);
>
>                                return results;
>                        }
>                });
>
>                return list;
>
> My Aim (using spring)
> 1. Write on Generic DAO
> 2. One CRUD service
> 3. One SearchService
> 4. Use generic to abstract over types.
>
> JUnit testing is pending... will keep you posted.
>
> Thanks...a bunch
>
>
>
>
> Gaurav Malhotra wrote:
>>
>>  In Hibernate I use to write the following generic code and utilize
>> hibernates org.hibernate.criterion.Example.
>>
>> http://www.hibernate.org/hib_docs/v3/api/org/hibernate/criterion/Example.html
>>
>>  public List<T> findByExample(T exampleCriteria) {
>>   final T t = exampleCriteria;
>>   List<T> list = (List<T>) getJpaTemplate().execute(new JpaCallback() {
>>    public Object doInJpa(javax.persistence.EntityManager em)
>>      throws javax.persistence.PersistenceException {
>>     final Example example = Example.create(t).excludeZeroes();
>>
>>     Criteria criteria = ((Session) em.getDelegate())
>>       .createCriteria(t.getClass()).add(example)
>>       .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
>>
>>     return criteria.list();
>>    }
>>   });
>>   return list;
>>  }
>>
>> Whats an equivalent in EclipseLink??
>>
>
> --
> View this message in context: http://www.nabble.com/org.hibernate.criterion.Example-equivalent-in-Eclipselink-tp18688959p18689235.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>