`

hibetnate 缓存问题,换成JDBC

 
阅读更多

@Transactional

public synchronized int addPiaojuOrder(WlcOrder wlcOrder, WlcPiaoju wlcPiaoju, 

Double buyMoney) {

try {

//支付成功和下单未支付的总额

Double amount = wlcPiaojuService.getAllOrderAmountByPJId(wlcPiaoju.getId());

BigDecimal b1 = new BigDecimal(Double.toString(buyMoney));

b1 = b1.setScale(2, BigDecimal.ROUND_HALF_UP); 

BigDecimal b2 = new BigDecimal(Double.toString(wlcPiaoju.getTotal()));

b2 = b2.setScale(2, BigDecimal.ROUND_HALF_UP); 

BigDecimal b3 = new BigDecimal(Double.toString(amount));

b3 = b3.setScale(2, BigDecimal.ROUND_HALF_UP); 

//购买时间已超过放款时间

if (wlcPiaoju.getLoansTime().getTime() - new Date().getTime() < 0) {

return 3;

}

//票据状态不在发售中

if (!"2".equals(wlcPiaoju.getProductStatus())) {

return 1;

}

//购买金额大于剩余金额 buyMoney > (wlcPiaoju.getTotal()-amount)

if (b1.compareTo(b2.subtract(b3)) > 0) {

return 2;

}

//订单满额锁定状态buyMoney == (wlcPiaoju.getTotal()-amount)

if (b1.compareTo(b2.subtract(b3)) == 0) {

wlcPiaoju.setProductStatus("6");

wlcPiaojuService.saveOrUpdate(wlcPiaoju);

}

wlcPiaojuService.saveOrder(wlcOrder);

//this.saveOrUpdate(wlcOrder);

 

return -1;

 

} catch (Exception e) {

e.printStackTrace();

logger.info("WlcOrderServiceImpl-------------------------addPiaojuOrder()出现异常======================" + e.getMessage());

return 2;

}

}

 

     在以上的红色代码中,两个方法开始分别使用了hibernate机制,来查询订单总额和保存新的订单。

查询订单总额主要用于用于比较新的订单是否超过可买余额。但是在使用hibernate时间,由于取得的数据都是从缓存里面获取的,所以,出现了“冒顶”的情况。

     开始以为bug的产生是由于同步没成功,最后经过几天的奋战,用JDBC来操作这两个方法。获得了成功。

分享到:
评论

相关推荐

    网上商城源码——struts+hibetnate+jsp实现

    3. `lib`目录:项目依赖的第三方库,如Struts、Hibernate、JDBC驱动等。 4. `config`目录:配置文件,如Struts配置文件(`struts-config.xml`)、Hibernate配置文件(`hibernate.cfg.xml`)、Web应用配置(`web.xml`)等。...

    hibetnate+struts2做的登录注册增删改查

    在IT行业中,开发Web应用程序时,常常会使用到框架来简化开发流程,提高效率。"hibernate+struts2"就是一个经典的Java Web开发组合,主要用于实现数据持久化和业务逻辑控制。本项目是一个基于这个组合实现的登录注册...

    spring+hibernate+struts教程

    spring+hibernate+struts教程

    struts2+hibenate+spring整合小例子 增删改查

    Struts2、Hibernate和Spring是Java Web开发中的三大主流框架,它们各司其职,协同工作,能够构建出高效、可维护的Web应用程序。在这个整合的小例子中,我们将深入理解这三个框架如何相互配合,实现一个基础的“增删...

    详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    Hibernate框架是一个开放源代码的持久层框架,旨在解决Java应用程序中的数据访问问题。Hibernate框架提供了强大的ORM(Object-Relational Mapping,对象关系映射)功能,可以将Java对象与关系数据库进行映射。 知识...

    Java的Hibernate框架中一对多的单向和双向关联映射

    在Java的Hibernate框架中,一对多关联映射是一种常见的数据模型关系,用于表示一个实体(如班级)可以与多个其他实体(如学生)相关联。这种关系映射可以帮助简化数据库操作,使得在Java代码中处理这些关系变得更加...

    struts2 课程设计

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,为构建可维护性和可扩展性高的企业级应用程序提供了坚实的基础。在"struts2 课程设计"中,我们将深入探讨如何利用Struts2框架来实现...

    hibernate -深入浅出

    这是分卷压缩后的资源的第二部分,请先下载本人资源的第一部分后再解压。

Global site tag (gtag.js) - Google Analytics