【问题标题】:spring boot - postgresql transactionsspring boot - postgresql 事务
【发布时间】:2019-06-07 16:14:19
【问题描述】:

我有以下设置: - spring boot 应用程序发出一个 post 请求,以使用 hibernate 将对象插入到 postgresql 表 TableA 中; - 某个 postgresql 表有一个触发器,该触发器在某些条件下触发一个插入 TableB 的函数; - TableB有2个触发器:第一个使用listen/notify函数在TableB插入后在websocket上发送通知,第二个使用函数插入TableC

问题:如果客户端在 TableA 中的第一次插入成功,他会收到 200 代码,但接下来可能还有另外 2 次插入。 如果在以下任一插入过程中出现问题,客户端会看到 200 代码,但会丢失重要数据。 我的逻辑是这必须被包装成一个全有或全无的事务式实体,但我该怎么做呢?

亲切的问候,

EDIT1:我刚刚做了一个测试,我用@Transactional注释了第一个post请求方法,在接下来的插入过程中,如果遇到任何错误并且没有执行任何插入,客户端会返回500错误代码。很抱歉浪费您的时间。

【问题讨论】:

  • 你能不能显示错误什么的

标签: spring postgresql transactions


【解决方案1】:

使用@Transactional 注释第一个请求方法并控制所有可能的错误,甚至使用try 和catch 块。

您还应该定义您的代码将返回哪些错误,并非所有错误都由服务器引起,当您应该返回 5XX 错误时,还应由客户端(例如发送错误或意外参数)和您可能应该返回 4XX 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-29
    • 2018-11-05
    • 2018-12-17
    • 1970-01-01
    • 2014-11-20
    • 2017-05-22
    • 2019-12-09
    • 2020-03-11
    相关资源
    最近更新 更多