Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Hibernate中为特定的数据库行更改添加侦听器?_Java_Spring Boot_Hibernate - Fatal编程技术网

Java 如何在Hibernate中为特定的数据库行更改添加侦听器?

Java 如何在Hibernate中为特定的数据库行更改添加侦听器?,java,spring-boot,hibernate,Java,Spring Boot,Hibernate,我正在开发一个食品订购应用程序,如图所示,user1将进行付款和订购,然后调用API/waitForStatus/orderid,以获得确认,只有在付款提供商向我们确认后才会返回 支付提供商将使用API/confirmOrder/orderid 我的问题是如何将侦听器添加到特定的行和列 这是我的实体类 @Data @Entity @Table(name = "Order") public class Order{ @Id @GeneratedValue(st

我正在开发一个食品订购应用程序,如图所示,user1将进行付款和订购,然后调用API
/waitForStatus/orderid
,以获得确认,只有在付款提供商向我们确认后才会返回

支付提供商将使用API
/confirmOrder/orderid

我的问题是如何将侦听器添加到特定的行和列

这是我的实体类

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

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    
    @Column(name = "STATUS")
    private String status;
}
这是我的JPA存储库类

@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {

    Order getOrderById(Long id);

}
@存储库
公共接口OrderRepository扩展了JpaRepository{
订单getOrderById(长id);
}
这是我的服务课

@Service
public class OrderDomainService implements IOrderDomainService {
    private final OrderRepository orderRepository;

    public OrderDomainService(OrderRepository orderRepository) {
        this.orderRepository = orderRepository;
    }

   @Override
   public UserOrder getOrderById(Long orderId) {
         return orderRepository.getOrderById(Long id)
   }
   
   @Override
   public UserOrder waitForStatusCongfirmation(Long orderId) {
        
        //<-------------How to handle here
   }

}
@服务
公共类OrderDomainService实现IOrderDomainService{
私有最终订单存储库订单存储库;
公共OrderDomainService(OrderRepository OrderRepository){
this.orderRepository=orderRepository;
}
@凌驾
公共用户订单getOrderById(长orderId){
返回orderRepository.getOrderById(长id)
}
@凌驾
公共用户订单WaitForStatusConfirmation(长订单ID){

// 有一个很棒的工具叫做Debezium,你可以用它来监听任何数据库更改:

只有google hibernate实体Listener你不能监听数据库更改。你必须使用一个任务调度器,比如定期检查队列中的哪个ID。没有一种机制可以让数据库通知应用程序进行更改类似的更改。我认为这必须在应用程序级别上完成。如果你想同步完成,我的意思是你在“阻塞”用户必须等待PaymentProvider的回复,然后像定期检查数据库这样的事情可以作为@coladict的一种解决方案,如果您想异步执行,那么您可以向用户发送推送通知,让他/她知道支付成功。