当前位置: 首页 > news >正文

手机wap网站cms源码做律师百度推广的网站

手机wap网站cms源码,做律师百度推广的网站,网业截屏怎么截,杭州专业网站制作设计jpa 手动预编译JPA提供了几种查询数据的方法。 可以根据各种标准#xff08;例如#xff0c;使用的语言#xff08;SQL与JPQL#xff09;或查询是静态的#xff08;编译时间#xff09;还是动态的#xff08;执行时间#xff09;#xff09;对此类替代方案进行分类。 … jpa 手动预编译 JPA提供了几种查询数据的方法。 可以根据各种标准例如使用的语言SQL与JPQL或查询是静态的编译时间还是动态的执行时间对此类替代方案进行分类。 静态查询是使用Entity类定义本身中的注释NamedQuery javax.persistence.NamedQuery 和NamedQueries javax.persistence.NamedQueries 定义的 NamedQuery(namefindAllCustomersWithName,querySELECT c FROM Customer c WHERE c.name LIKE :custName) 另一方面 EntityManager提供了分别接受JPQL或SQL查询的createQuery…和createNativeQuery…方法。 因此可以在编译或执行时定义查询。 注意 建议始终使用Query中的 setParameter…方法来使用参数化查询以避免SQL注入漏洞。 标准API 但是JPA提供了另一种查询对象的方法 Criteria API 。 确实切换到JPA的动机之一是处理对象而不是SQL方言不是吗 让我们看一个示例代码。 实体定义 Entity public class User {Idprivate Integer userId;BasicColumn(length15, nullablefalse)private String name;BasicColumn(length64, nullablefalse)private String userDigestedPasswd;BasicColumn(length50, nullabletrue)private String email;BasicColumn(nullablefalse)public Integer privilegeLevel;BasicColumn(nullablefalse)private Boolean active; } 让我们查询数据库并检查结果使用JUnit public class UserTest {Testpublic void testUserCriteria(){ EntityManagerFactory emf null; EntityManager em null; try {emf Persistence.createEntityManagerFactory(criteria);em emf.createEntityManager();final CriteriaBuilder cb em.getCriteriaBuilder();final CriteriaQueryUser q cb.createQuery(User.class);final RootUser users q.from(User.class);final Predicate condition cb.equal(users.get(privilegeLevel), 5);q.select(users).where(condition).orderBy(cb.asc(users.get(userId)));em.getTransaction().begin();ListUser result em.createQuery(q).getResultList();em.getTransaction().commit();assertNotNull(result);assertEquals(2, result.size());assertEquals(1, (int)result.get(0).getUserId());assertEquals(Pepe, result.get(0).getName());assertEquals(3, (int)result.get(1).getUserId());assertEquals(Dolores, result.get(1).getName());} catch (Exception e) {fail(Unexpected Exception e.getMessage()); } finally {if (em ! null)em.close();if (emf ! null)emf.close(); } } } 以下几行显示查询的创建 final CriteriaBuilder cb em.getCriteriaBuilder();final CriteriaQueryUser q cb.createQuery(User.class);final RootUser users q.from(User.class);final Predicate condition cb.equal(users.get(privilegeLevel);q.select(users).where(condition).orderBy(cb.asc(users.get(userId 首先从EntityManager获得CriteriaBuilder 。 然后获取一个CriteriaQuery实例将该类设置为保存结果。 在我们的例子中 User.class final CriteriaBuilder cb em.getCriteriaBuilder(); final CriteriaQueryUser q cb.createQuery(User.class); 接下来必须设置要对其运行查询的实体 final RootUser users q.from(User.class); 现在是时候设置查询匹配条件了。 在示例代码中条件只是属性privilegeLevel等于5 final Predicate condition cb.equal(users.get(privilegeLevel), 5); 最后构建查询以在Root上添加条件。 也可以设置分组和排序选项即对userId设置升序 q.select(users).where(condition).orderBy(cb.asc(users.get(“userId”))); 请查看CriteriaBuilder中的不同选项。 可以在CriteriaQuery中找到分组和排序选项。 使用元模型进行编译时检查 请注意我们刚刚构建的查询需要跟踪对象属性名称。 例如要构建查询将使用属性privilegeLevel的名称。 但是如果稍后更改属性名称则代码将编译并且仅在运行时失败 final CriteriaQueryUser q cb.createQuery(User.class);final RootUser users q.from(User.class);final Predicate condition cb.equal(users.get(privilegeLevel), 5);q.select(users).where(condition).orderBy(cb.asc(users.get(userId))); 那不好 幸运的是使用元模型我们将能够构建编译时检查的查询。 可以在The Java EE6 Tutorial中找到简短的介绍。 使用元模型代码将引用对象的SingularAttribute而不是使用包含对象属性名称的String。 因此如果稍后更改对象属性则编译器将为我们标记该属性。 首先必须创建对应的元模型类 EntityType 。 尽管可以通过多种方式实现但对于openJPA实现最简单的方法可能是添加一个openJPA构建标记 -Aopenjpa.metamodel true 。 因此我们创建了User_类它是User的对应元模型类 * Generated by OpenJPA MetaModel Generator Tool. **/ package com.wordpress.tododev.criteria.entities; import javax.persistence.metamodel.SingularAttribute; javax.persistence.metamodel.StaticMetamodel (valuecom.wordpress.tododev.criteria.entities.User.class) javax.annotation.Generated (valueorg.apache.openjpa.persistence.meta.AnnotationProcessor6,dateMon Mar 04 16:47:46 CET 2013) public class User_ {public static volatile SingularAttributeUser,Boolean active;public static volatile SingularAttributeUser,String email;public static volatile SingularAttributeUser,String name;public static volatile SingularAttributeUser,Integer privilegeLevel;public static volatile SingularAttributeUser,String userDigestedPasswd;public static volatile SingularAttributeUser,Integer userId; } 如果将此类添加到代码库中则以后对User类的任何更改都不会引起注意。 而且将自动生成的项目添加到代码版本控制系统中不是一个好主意。 使用ant maven或类似工具可以添加目标以创建元模型类。 在更改JPA实体后应执行该目标。 也可以使用IDE。 例如对于使用Eclipse的只需要已经提到编译标志添加属性- Java的反编译注解处理器和的libJAR包含所选择的JPA实现第厂路内注释处理器的注释处理器可能导致自动模式下的编译问题前提是必须在使用它的代码之前编译元模型类。 让我们向套件添加另一个测试。 这个不会提供包含属性名称的String而是使用metamodel类 Testpublic void testUserCriteriaMetaModel(){EntityManagerFactory emf null;EntityManager em null;try {emf Persistence.createEntityManagerFactory(criteria);em emf.createEntityManager();final CriteriaBuilder cb em.getCriteriaBuilder();final CriteriaQueryUser q cb.createQuery(User.class);final Metamodel m em.getMetamodel();final RootUser user q.from(m.entity(User.class));final Predicate condition cb.equal(user.get(User_.privilegeLevel), 5);q.select(user).where(condition).orderBy(cb.asc(user.get(User_.userId)));em.getTransaction().begin();ListUser result em.createQuery(q).getResultList();em.getTransaction().commit();assertNotNull(result);assertEquals(2, result.size());assertEquals(1, (int)result.get(0).getUserId());assertEquals(Pepe, result.get(0).getName());assertEquals(3, (int)result.get(1).getUserId());assertEquals(Dolores, result.get(1).getName()); } catch (Exception e) {fail(Unexpected Exception e.getMessage());} finally {if (em ! null)em.close();if (emf ! null)emf.close();}} 更相关的更改是user.getUser_.privilegeLevel而不是users.get“ privilegeLevel”和   user.getUser_.userId而不是   users.get“ userId”。 从GitHub下载源代码。 翻译自: https://www.javacodegeeks.com/2014/08/compile-time-checking-jpa-queries.htmljpa 手动预编译
http://wiki.neutronadmin.com/news/196400/

相关文章:

  • 网站管理有哪些不会做网站
  • 做移动端网站软件用linux做网站
  • 网站开发必备人员长沙建站工作室
  • 阿里巴巴网站推广怎么做网站开发分为
  • 茶叶商城网站建设网站建设与管理课程实训
  • 在线心理健康网站建设无代码系统搭建平台
  • 网站怎么做微博认证网络推广是做什么工作的
  • 建网站收费多少钱网站页面设计工作流程
  • 品牌策划全案公司台州seo排名公司
  • 做网站用上面软件写代码比较好html5移动端网站开发教程
  • 网站建设招聘网响应式网站建设哪家公司好
  • 如何做网站内容上海关键词排名优化价格
  • 在相亲网站认识了一个做红酒生意的百度网页首页
  • 做淘宝客为什么要做网站产品设计优秀作品
  • 网站开发H5毕业设计网站论文
  • 网站建设中的安全问题典型营销型网站有哪些
  • 爱网站关键词挖掘小松建设的官方网站
  • 可以做视频剪辑兼职的网站标识设计公司
  • 建音乐网站东凤网站
  • 网站建设 软件服务什么什么设计英文网站
  • 阿里云服务器上传网站深圳电商公司排行榜
  • 嘉兴网站建设定制网站云南响应式网站建设
  • 包装设计概念网站中的关键词seo设置
  • 学习网站开发软件做网站美工工资多少
  • 上海高登联合建设网站百度点击器找名风
  • 官方网站开发哪家便宜桂林生活网租房信息
  • 泉州网站建设解决方案asp化妆品网站
  • 电子商务网站建设的技术综述论文安卓下载安装
  • 深圳非凡网站建设公司哪里注册域名最便宜
  • 网站编排类型台州网站制作费用