源码:
Service 业务层
 
@Service("brandService") @Transactional
public class BrandServiceBean extends DaoSupport<HouseType> implements
  HouseTypeService {
 @Override
 public void delete(Serializable ... entityids) {
  if(entityids!=null && entityids.length>0){
   StringBuffer jpql = new StringBuffer();
   for(int i=0 ;i<entityids.length;i++){
    jpql.append("?").append(i+2).append(",");
   }
   jpql.deleteCharAt(jpql.length()-1);
   Query query = em.createQuery("update HouseType o set o.visible=?1 where o.ID in("+ jpql.toString()+")")
   .setParameter(1, false);
   for(int i=0 ;i<entityids.length;i++){
    query.setParameter(i+2, entityids[i]);
   }
   query.executeUpdate();
  }
 }
 @SuppressWarnings("unchecked")
 @Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
 public List<Integer> getSubTypeid(Integer[] parentids){
  if(parentids!=null && parentids.length>0){
   StringBuffer jpql = new StringBuffer();
   for(int i=0; i<parentids.length; i++){
    jpql.append('?').append((i+1)).append(',');
   }
   jpql.deleteCharAt(jpql.length()-1);
   Query query = em.createQuery("select o.ID from HouseType o where o.parent.ID in("+ jpql.toString()+ ")");
   for(int i=0; i<parentids.length; i++){
    query.setParameter(i+1, parentids[i]);
   }
   return query.getResultList();
  }
  return null;
 }
}
 
 
Action类
 
@Controller("/control/brand/list")
public class BrandAction extends Action {
 @Resource
 private BrandService brandService;
 @Override @Permission(module="brand", privilege="view")
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  BrandForm formbean = (BrandForm) form;
  //组装sql
  StringBuffer jpql = new StringBuffer("o.visible=?1 and o.types = ?2");
  List<Object> params = new ArrayList<Object>();
  params.add(true);
  params.add(Types.Brand);
  if("true".equals(formbean.getQuery())){
   jpql.append(" and o.name like ?"+ (params.size()+1));
   params.add("%"+ formbean.getName()+ "%");
  }
  PageView<HouseType> pageView = new PageView<HouseType>(12, formbean.getPage());
  LinkedHashMap<String, String> orderby = new LinkedHashMap<String, String>();
  orderby.put("developer", "desc");
  pageView.setQueryResult(brandService.getScrollData(pageView.getFirstResult(),
    pageView.getMaxresult(), jpql.toString(), params.toArray(), orderby));
  request.setAttribute("pageView", pageView);  
  return mapping.findForward("list");
 }
 
 
2010-11-19 17:17:52 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/control/brand/list': Injection of resource fields failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'brandService' must be of type [cn.itcast.service.housecard.BrandService], but was actually of type [$Proxy41]
 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:292)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:959)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'brandService' must be of type [cn.itcast.service.housecard.BrandService], but was actually of type [$Proxy41]
 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:435)
 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:409)
 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:537)
 at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:180)
 at org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105)
 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:289)
 ... 40 more