简体   繁体   English

如何在服务类中回滚Spring数据jsp示例(如何管理Spring数据jpa事务

[英]How to roll back Spring data jsp example in service class (How to manage Spring data jpa transaction

How to roll back Spring data jsp example in service class (How to manage Spring data jpa transaction) 如何在服务类中回滚Spring数据jsp示例(如何管理Spring数据jpa事务)

@RestController
public class OrderServiceController {
    @Autowired
    private OrderService orderService;

    @RequestMapping("/order/{orderId}")
    public Order giveOrder(@PathVariable("orderId") Integer id) {
        return orderService.giveOrder(id);
    }

    @RequestMapping(path = "/save_order", method = RequestMethod.POST)
    public String saveOrder(@RequestBody Order order) {
        return orderService.saveOrder(order);
    }

    @RequestMapping("/customerOrders/{customerId}")
    public List<Order> giveCustomerOrders(@PathVariable("customerId") Integer customerId) {
        return List<Order> orderService.giveCustomerOrders(customerId);
    }
}

Domain class 域类

package com.kk.spring.entity;

public class Order { 
    @Entity
    @Table(name = "ordet_tab")
    public class OrderEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String itemName;
    private String address;
    private String zipCode;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getZipCode() {
        return zipCode;
    }

    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }
}

Repository interface 仓库界面

@Repository
public interface OrderRepositry extends JpaRepository<OrderEntity, Long> {
}

Service class 服务等级

@Service
public class OrderServiceImpl implements OrderService {
    @Autowired
    private OrderRepositry orderRepositry;

    @Override
    public Order giveOrder(Integer id) {
        return OrderConvert.orderEntityToDTO(orderRepositry.getOne(Long.parseLong(id.toString())));
    }

    @Override
    public String saveOrder(Order order) {
        OrderEntity orderEntity = orderRepositry.save(OrderConvert.orderDTOToEntity(order));
        Boolean flag = myFilter(OrderConvert.orderEntityToDTO(orderEntity));
        if (flag) {
            return "Order next time";
            // here I need rollback the save data 
        }
        return "Order success";
    }

    @Override
    public List<Order> giveCustomerOrders(Integer customerId) {
        return null;
    }

    private Boolean myFilter(Order order) {
        if (order.getItemName().equals("TV")) {
            return true;
        }
        else {
            return false;
        }
    }
}

Can anyone help me how to manage Spring data jpa transaction in this example? 在这个例子中,谁能帮助我如何管理Spring数据jpa事务?

Use @Transactional in your service class. 在服务类中使用@Transactional。 Now the context of transaction will be on service class instead of repository. 现在,事务的上下文将在服务类上,而不是在存储库上。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM