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

网站开发工程师职责工会网站建设管理工作总结

网站开发工程师职责,工会网站建设管理工作总结,防伪码查询网站怎么做的,江苏优化网站哪家好从JPA 2.0版开始#xff0c; EntityManager提供了方法getCriteriaBuilder()来动态构建选择查询#xff0c;而无需使用Java持久性查询语言#xff08;JPQL#xff09;进行字符串连接。 在2.1版中#xff0c;此CriteriaBuilder提供了两个新方法createCriteriaDelete()和crea… 从JPA 2.0版开始 EntityManager提供了方法getCriteriaBuilder()来动态构建选择查询而无需使用Java持久性查询语言JPQL进行字符串连接。 在2.1版中此CriteriaBuilder提供了两个新方法createCriteriaDelete()和createCriteriaUpdate() 使我们可以使用条件API制定删除和更新查询的方法。 出于说明目的让我们对两个实体Person和Geek使用简单的继承用例 Entity Table(name T_PERSON) Inheritance(strategy InheritanceType.JOINED) public class Person {IdGeneratedValueprivate Long id;Column(name FIRST_NAME)private String firstName;Column(name LAST_NAME)private String lastName;... }Entity Table(name T_GEEK) Access(AccessType.PROPERTY) public class Geek extends Person {private String favouriteProgrammingLanguage;... } 要从我们的数据库中删除所有喜欢Java作为其编程语言的怪胎我们可以使用EntityManager的新createCriteriaDelete()方法利用以下代码 EntityTransaction transaction null; try {transaction entityManager.getTransaction();transaction.begin();CriteriaBuilder builder entityManager.getCriteriaBuilder();CriteriaDeleteGeek delete builder.createCriteriaDelete(Geek.class);RootGeek geekRoot delete.from(Geek.class);delete.where(builder.equal(geekRoot.get(favouriteProgrammingLanguage), Java));int numberOfRowsUpdated entityManager.createQuery(delete).executeUpdate();LOGGER.info(Deleted numberOfRowsUpdated rows.);transaction.commit(); } catch (Exception e) {if (transaction ! null transaction.isActive()) {transaction.rollback();} } 与纯SQL一样我们可以使用from()方法指定要针对其发出删除查询的表并使用where()声明谓词。 通过这种方式标准API允许以动态方式定义批量删除操作而无需使用过多的字符串连接。 但是SQL是如何创建的呢 首先ORM提供程序必须注意我们正在使用策略JOINED从继承层次结构中删除这意味着我们有两个表T_PERSON和T_GEEK 其中第二个表存储对父表的引用。 Hibernate版本4.3.8.Final创建以下SQL语句 insert intoHT_T_GEEKselectgeek0_.id as id fromT_GEEK geek0_ inner joinT_PERSON geek0_1_ on geek0_.idgeek0_1_.id wheregeek0_.FAV_PROG_LANG?;delete fromT_GEEK where(id) IN (selectid fromHT_T_GEEK);delete fromT_PERSON where(id) IN (selectid fromHT_T_GEEK)delete fromHT_T_GEEK; 如我们所见Hibernate使用与我们的搜索条件匹配的极客/人员的ID填充了一个临时表。 然后它将删除极客表中的所有行然后删除人员表中的所有行。 最后临时表被清除。 删除语句的顺序很明确因为表T_GEEK在T_PERSON表的id列上具有外键约束。 因此子表中的行必须在父表中的行之前删除。 本文介绍了Hibernate创建临时表的原因。 概括起来潜在的问题是查询限制了仅在子表中存在的列上要删除的行。 但是子表中的行必须在父表中的相应行之前删除。 删除子表中的行即所有具有FAV_PROG_LANGJava的怪胎后由于已经删除了怪胎行因此无法随后删除所有对应的人员。 解决该问题的方法是临时表该临时表首先收集应删除的所有行ID。 知道所有ID后可以使用此信息先从怪胎表中删除行然后从人员表中删除行。 上面生成的SQL语句当然独立于标准API的用法。 使用JPQL方法会导致生成相同的SQL EntityTransaction transaction null; try {transaction entityManager.getTransaction();transaction.begin();int update entityManager.createQuery(delete from Geek g where g.favouriteProgrammingLanguage :lang).setParameter(lang, Java).executeUpdate();LOGGER.info(Deleted update rows.);transaction.commit(); } catch (Exception e) {if (transaction ! null transaction.isActive()) {transaction.rollback();} } 当我们将继承策略从JOINED更改为SINGLE_TABLE 生成的SQL语句也更改为单个此处的鉴别DTYPE列为DTYPE delete fromT_PERSON whereDTYPEGeek and FAV_PROG_LANG?结论 用于删除和更新的标准API的新增功能使您可以构造SQL语句而无需任何字符串连接。 但是请注意从继承层次结构中进行批量删除可能会迫使基础ORM使用临时表以便组装必须事先删除的行列表。 翻译自: https://www.javacodegeeks.com/2015/02/jpa-2-1-criteria-deleteupdate-temporary-tables-hibernate.html
http://www.zqtcl.cn/news/102954/

相关文章:

  • 网站外链平台的建设方法平台类型(至少5个)?兰州道路建设情况网站
  • 网站建立健全举报工作机制设计电子商务网站主页
  • 广州市建设工程交易服务中心网站沈阳百度推广哪家好
  • 个人网站备案需要什么网站建立的重要性
  • wordpress用户名西安seo代理计费
  • 网站建设前准备工作手机上传视频网站开发
  • 海口网站建设是什么意思wordpress推广码
  • 杭州市住房和城乡建设厅网站海南网站建设设计
  • 网站建设平台一般多少钱wordpress 本地上传服务器
  • 怎么给网站命名男女做羞羞羞的网站
  • 北京响应式网站建设公司信息流推广方式
  • 一级a做爰片迅雷网站微分销系统定制开发
  • 山东网站建设工作室网页设计全部代码
  • 用c 做网站可以吗注册网站什么要求
  • 销售网站排名销售型网站模板
  • wordpress 汽车宁波seo整体优化
  • 网站建设公司在哪里宣传c2c旅游电子商务平台
  • 网站查看空间商网站不提交表单
  • 空间怎么上传网站企业所得税怎么算公式
  • 网站建设wix建筑公司网站设计思路
  • 门户型网站都有哪些网页制作的视频教程
  • 虚拟主机 多个网站没有备案的网站
  • 河南网站建设推广公司汕尾网站建设
  • 海南省建设网站首页公司网站图片传不上去
  • 中国建设银行网站评价广告投放都有哪些平台
  • 网站系统免费wordpress附件不在数据库
  • 网站开发国外研究状况电商推广是什么意思
  • 太原建高铁站wordpress分级菜单显示
  • 工信部网站备案变更运营一个app大概多少钱
  • 杭州网站建设公司哪家好网站建设 中国联盟网