【问题标题】:switchyard jpa hibernate entity manager NamedQueryswitchyard jpa hibernate 实体管理器 NamedQuery
【发布时间】:2014-09-06 18:28:58
【问题描述】:

有没有人可以提供一个使用注入引用类的开关场服务示例:

@PersistenceContext 私有实体管理器实体管理器;

一个使用@NamedQueries 的例子会很好。

你好!

【问题讨论】:

    标签: hibernate jpa named-query


    【解决方案1】:

    将 Bean 绑定与您可以创建的服务一起使用。以下是使用 REST 的示例

     /**
     * This is the rest interface for Switchyard This interface
     *         contains the services which are exposed 
     */
    
    Interface VendorRestService.java
    @Path("/vendorDetails")
    public interface VendorRestService {
    
    @GET
        @Path("/vendorPriceDetails")
        @Produces({ MediaType.APPLICATION_JSON })
        public Response<List<String>> getAllPriceDetails(
                @QueryParam("vendorId") String vendorId,
                @QueryParam("location") String location);
    
    }
    

    VendorService.java

    public interface VendorService {
        Response<List<String>> getAllPriceDetails(VendorRequest request);
    }
    

    VendorRequest.java

    public class VendorRequest  {
    
    
        @JsonProperty("vendorId")
        private String vendorId;
    
        @JsonProperty("location")
        private String location;
    
        getters/setters
        }
    

    Bean 实现类 VendorServiceBean.java

    @Service(VendorService.class)
    public class VendorServiceBean implements VendorService {
    @Override
        public Response<List<String>> getAllPriceDetails(VendorRequest request) {
            .
            .
            .
    
            priceList = vendorFacade.getPriceByVendor(request.getVendorId(),request.getLocation());
            .
            .
            .
            return Response;
        }
        }
    

    Facade层的实现类VendorFacadeImplementation.java

    public class VendorFacadeImplementation implements VendorFacade {
    
    @Inject
    private EntityManager em;
    
        @Override
        public List<String> getPriceByVendor(String vendorId,
                String location) {
                try{
                query = em
                        .createNamedQuery("VendorData.getVendorPriceDetails");
                query.setParameter("vendorId", vendorId);
                query.setParameter("location", location);
                List<String> priceList = query.getResultList();
                }catch(Exception ex){
    
                }
    
    
                return priceList;
    
                }
    

    模型类。将DB表映射到java类

    @Entity
    @Table(name = "VendorData")
    @NamedQueries({ 
        @NamedQuery(name = "VendorData.getVendorPriceDetails", query = "select vd.price from VendorData vd where vd.vendorId = :vendorId and vd.location = :location"))}
        public class VendorData implements java.io.Serializable {   
    
    
    }   
    
    
    
    /*Expose an entity manager using the resource producer pattern*/
     Resources.java
     public class Resources {
    
        /*Expose an entity manager using the resource producer pattern*/
    
        @PersistenceContext
        @Produces
        private EntityManager em;
    
        }
    

    【讨论】:

      猜你喜欢
      • 2016-03-24
      • 2020-01-16
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2016-01-08
      • 2016-03-17
      • 2015-06-22
      相关资源
      最近更新 更多