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

做网站要多少钱新乡上海企业信息公示网查询全国

做网站要多少钱新乡,上海企业信息公示网查询全国,square wordpress,建设网站企业Hibernate将开发人员的思维方式从思考SQL转变为思考对象状态转换。 根据Hibernate Docs#xff0c;实体可能处于以下状态之一#xff1a; new / transient#xff1a;实体不与持久性上下文关联#xff0c;因为它是数据库不知道的新创建的对象。 持久性#xff1a;实体与… Hibernate将开发人员的思维方式从思考SQL转变为思考对象状态转换。 根据Hibernate Docs实体可能处于以下状态之一 new / transient实体不与持久性上下文关联因为它是数据库不知道的新创建的对象。 持久性实体与持久性上下文相关联位于第一级缓存中并且存在一个表示该实体的数据库行。 分离实体以前与持久性上下文相关联但是持久性上下文已关闭或者手动撤消了该实体。 已删除实体被标记为已删除并且持久性上下文将在刷新时从数据库中将其删除。 通过调用EntityManager方法来将对象从一种状态移动到另一种状态例如 坚持 合并 去掉 级联允许将给定事件从父级传播到子级还简化了实体关系管理的管理。 在刷新期间Hibernate会将当前持久性上下文记录的更改转换为SQL查询。 现在考虑一下以下代码中发生了什么为简洁起见将其简化 Entity public class Product {OneToMany(fetch FetchType.LAZY, cascade CascadeType.ALL, mappedBy product, orphanRemoval true)OrderBy(index)private Set images new LinkedHashSet();public Set getImages() {return images;}public void addImage(Image image) {images.add(image);image.setProduct(this);}public void removeImage(Image image) {images.remove(image);image.setProduct(null);} }Entity public class Image {Column(unique true)private int index;ManyToOneprivate Product product;public int getIndex() {return index;}public void setIndex(int index) {this.index index;}public Product getProduct() {return product;}public void setProduct(Product product) {this.product product;} }final Long productId transactionTemplate.execute(new TransactionCallback() {Overridepublic Long doInTransaction(TransactionStatus transactionStatus) {Product product new Product();Image frontImage new Image();frontImage.setIndex(0);Image sideImage new Image();sideImage.setIndex(1);product.addImage(frontImage);product.addImage(sideImage);entityManager.persist(product);return product.getId();} });try {transactionTemplate.execute(new TransactionCallback() {Overridepublic Void doInTransaction(TransactionStatus transactionStatus) {Product product entityManager.find(Product.class, productId);assertEquals(2, product.getImages().size());Iterator imageIterator product.getImages().iterator();Image frontImage imageIterator.next();assertEquals(0, frontImage.getIndex());Image sideImage imageIterator.next();assertEquals(1, sideImage.getIndex());Image backImage new Image();sideImage.setName(back image);sideImage.setIndex(1);product.removeImage(sideImage);product.addImage(backImage);entityManager.flush();return null;} });fail(Expected ConstraintViolationException); } catch (PersistenceException expected) {assertEquals(ConstraintViolationException.class, expected.getCause().getClass()); } 由于存在Image.index唯一约束因此在刷新期间会收到ConstraintviolationException。 您可能想知道为什么会发生这种情况因为在添加具有相同索引的backImage之前我们为sideImage调用remove并且答案是冲洗操作顺序。 根据Hibernate JavaDocs SQL操作顺序为 插入 更新 集合元素的删除 集合元素的插入 删除 因为我们的图像集合是“ mappedBy”所以图像将控制关联因此“ backImage”插入发生在“ sideImage”删除之前。 select product0_.id as id1_5_0_, product0_.name as name2_5_0_ from Product product0_ where product0_.id? select images0_.product_id as product_4_5_1_, images0_.id as id1_1_1_, images0_.id as id1_1_0_, images0_.index as index2_1_0_, images0_.name as name3_1_0_, images0_.product_id as product_4_1_0_ from Image images0_ where images0_.product_id? order by images0_.index insert into Image (id, index, name, product_id) values (default, ?, ?, ?) ERROR: integrity constraint violation: unique constraint or index violation; UK_OQBG3YIU5I1E17SL0FEAWT8PE table: IMAGE 要解决此问题您必须在除去操作之后手动刷新持久性上下文 transactionTemplate.execute(new TransactionCallbackVoid() {Overridepublic Void doInTransaction(TransactionStatus transactionStatus) {Product product entityManager.find(Product.class, productId);assertEquals(2, product.getImages().size());IteratorImage imageIterator product.getImages().iterator();Image frontImage imageIterator.next();assertEquals(0, frontImage.getIndex());Image sideImage imageIterator.next();assertEquals(1, sideImage.getIndex());Image backImage new Image();backImage.setIndex(1);product.removeImage(sideImage);entityManager.flush();product.addImage(backImage);entityManager.flush();return null;} }); 这将输出所需的行为 select versions0_.image_id as image_id3_1_1_, versions0_.id as id1_8_1_, versions0_.id as id1_8_0_, versions0_.image_id as image_id3_8_0_, versions0_.type as type2_8_0_ from Version versions0_ where versions0_.image_id? order by versions0_.type delete from Image where id? insert into Image (id, index, name, product_id) values (default, ?, ?, ?) 源代码在这里 。 参考 Hibernate Facts在Vlad Mihalcea的Blog博客上 我们的JCG合作伙伴 Vlad Mihalcea 知道冲洗操作的顺序很重要 。 翻译自: https://www.javacodegeeks.com/2013/11/hibernate-facts-knowing-flush-operations-order-matters.html
http://wiki.neutronadmin.com/news/350194/

相关文章:

  • 南昌市 做网站的公司网站制作的电话
  • 云南微网站建设的公司有哪些wordpress快递模板下载
  • 网站架构拓扑图企业网店推广运营策略
  • 广州网站维护公司微信怎么关闭小程序
  • 外贸网站建站要多少钱咋样看网站域名是哪个服务商的
  • html网页留言板代码乌兰察布seo
  • 个人网站开发与实现开题报告网络公司企业网站模板
  • 专业网站建设团队seo专业优化方法
  • sql做网站后台如何用wordpress插件下载
  • 网站建设_微信开发网站上怎么做动图
  • 平顶山网站建设价格联系昆明网站建设
  • 金华建设技工学校网站五屏网站建设多少钱
  • 如何做自己的博客网站济南全屋定制品牌
  • 网站开发 职位描述网站图片设置
  • 网站做标题有用吗山西企业建站方案
  • 怎样做网站分流赚钱扁平式风格网站
  • google 网站收录新北网站建设
  • 装修网站大全承德网站制作
  • 潍坊网站公司网络科技拍艺术照
  • 网站开发团队哪些人cc域名网站需要备案吗
  • 网站如何做seo排名最新做做网站免费
  • 扬中市建设局网站网页制作工具大全
  • 全国卫生机构建设管理系统网站上海注册公司买新能源车
  • 成都代做网站手机网站大全网站
  • 深泽网站制作如何快速新建一个网站
  • 优化网站专题如何欣赏网站
  • o2o网站建设流程sjz住房建设局网站
  • 房地产网站设计方案网站排名alexa
  • 怎样自己搭建一个做影视的网站代运营怎么做
  • 凡科网站建设网站延吉网站建设彩票