JPA使用本地查询实现联表查询,同一结果集中返回多个实体,多个字段


/******************************************在实体类中建立本地查询******************************************************/

@NamedNativeQueries

(
    {
       
       @NamedNativeQuery(
           name="ReturnUseraddressById",
              query="select id,uid,name,cellphone,province,city,region,address,telCode,zip from useraddress where uid=?1",
              resultSetMapping="UseraddressEntity")
        //可能还有更多的本地查询设置
}
)


/**********************************建立返回结果集的mapping,可设置多个实体和标量混用******************************************************/



@SqlResultSetMapping
(
   name="UseraddressEntity",
   entities=
   {
       @EntityResult
       (
          entityClass=com.william.eShop.jpaModel.Useraddress.class,
          fields=
          {
         
         @FieldResult(name="id",column="id"),
              @FieldResult(name="uid",column="uid"),
              @FieldResult(name="name",column="name"),
              @FieldResult(name="cellphone",column="cellphone"),
              @FieldResult(name="province",column="province"),
              @FieldResult(name="city",column="city"),
              @FieldResult(name="region",column="region"),
              @FieldResult(name="address",column="address"),
              @FieldResult(name="telCode",column="telCode"),
              @FieldResult(name="zip",column="zip")
          }
       ),


//       @EntityResult
//       (
//          entityClass=entity.Customer.class,
//          discriminatorColumn="customer_type",
//          fields=
//          {
//              @FieldResult(name="id",column="customer_id"),
//              @FieldResult(name="name",column="customer_name")
//          }
//       )
       
       
   },
   columns={}

)





/**************************************************在逻辑类中用EntityManager进行查询******************************************************/

EntityManager em = EntityManagerHelper.getEntityManager();
//这里只是传递进去一个string值
Query q = em.createNamedQuery("ReturnUseraddressById");
//这里是设定在sql中所需的参数
q.setParameter(1, 1);

//得到结果集
java.util.List orderList = q.getResultList();
System.out.println(orderList.size());




你可能感兴趣的:(关于Java)