小编Phi*_*ger的帖子

Spring @Retryable 与有状态的 Hibernate 对象

我正在尝试使用 Springs @Retryable 使我的服务方法在失败时重试。

@Retryable(backoff = @Backoff(delay = 1000), maxAttempts = 3)
@Transactional(rollbackFor = Throwable.class)
public Something saveSomething(Something something) {
  //some logic and saving
}
Run Code Online (Sandbox Code Playgroud)

问题是,在保存某物对象后出现异常。所以事务被回滚并再次调用方法。不同之处在于,something-object 的 id 不再是 null,而是它从 Hibernate 之前的保存过程中获得的值,因此在第二次尝试中,Hibernate 不会保存该对象,而是尝试更新它。由于数据库中没有条目,因此更新不执行任何操作,并且对象不会持久保存到数据库中。

认识到这一点后,我尝试将 @Retryable 的 stateful 属性设置为 true:

@Retryable(backoff = @Backoff(delay = 1000), maxAttempts = 3, stateful = true)
@Transactional(rollbackFor = Throwable.class)
public Something saveSomething(Something something) {
  //some logic and saving
}
Run Code Online (Sandbox Code Playgroud)

但是使用该配置 saveSomething() 只调用一次,而 der 不是第二次尝试。

有没有人建议解决这个问题?

java spring hibernate transactional spring-retry

5
推荐指数
1
解决办法
1358
查看次数

Expo EAS:如何将eas更新分支与构建通道链接?

我有一个带有 EAS 的 expo (v 46.0.0) 项目,具有以下构建配置 (eas.json)。

{
  "cli": {
    "version": ">= 1.1.0"
  },
  "build": {
    "production": {
      "channel": "production",
      "env": {
        "APP_ENV": "production"
      },
      "credentialsSource": "local"
    },
    "preview": {
      "channel": "staging",
      "env": {
        "APP_ENV": "staging"
      },
      "credentialsSource": "local"
    },
    "development": {
      "distribution": "internal",
      "developmentClient": true,
      "ios": {
        "simulator": true
      }
    }
  },
  "submit": {
    "production": {}
  }
}
Run Code Online (Sandbox Code Playgroud)

Expo 中的预览版本如下所示: 世博会预览版

现在,我使用 EAS Update 通过以下命令将一些更改推送到现有版本:eas update --branch staging

更新会显示在 expo 中,并且还可以通过 Expo Go 使用预览二维码。但是,这些更改不会填充到提交到 App Store 和 …

expo expo-eas eas

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

eas ×1

expo ×1

expo-eas ×1

hibernate ×1

java ×1

spring ×1

spring-retry ×1

transactional ×1