日期:2014-05-20  浏览次数:20768 次

一个查询方法问题,求指教
Java code
public List<Object[]> findUser() {

        final String HQL = "select u.userId,u.userName ,u.userPassword from User u";
        return (List<Object[]>) getJpaTemplate().execute(new JpaCallback() {

            public Object doInJpa(EntityManager em) throws PersistenceException {

                Query query = em.createQuery(HQL);
                List<Object[]> list = query.getResultList();
                return list;

            }
        });

谁能给我讲讲这段代码的逻辑呢。。 大神们。求指教啊
findUser()里面为什么又写了两个方法呢?

------解决方案--------------------
不是写了两个方法,只是定义了一个内部匿名类,execute(new JpaCallback(....)这个匿名的类要实现他的doInJpa()方法。
------解决方案--------------------
我给你舔段差不多的代码
Java code

 public Integer bulkUpdate(final PK[] ids,String propertyName,final Object propertyValue){
       final String sqlString = "update "+getEntityName(this.persistentClass)+
        " set "+ propertyName +"  = :value "+
       " where id in (:ids) ";
       Integer count=hibernateTemplate.execute(new HibernateCallback<Integer>() {
           public Integer doInHibernate(Session session) throws HibernateException, SQLException {
               Query query = session.createQuery(sqlString);
               query.setParameter("value", propertyValue);
               query.setParameterList("ids", ids);
               return query.executeUpdate();
           }
       });

       return count;
   }