根据我的要求,我有自动递增的字段,而不是一个键。在调用存储库save()之后,我需要获取该自动增量字段的值。

merchantEntity = merchantRepository.save(merchantEntity);
merchantEntity.getMerchId() // returns null


但是,有些即时消息无法获取自动增量的值,因此返回null。
这是我的实体类。

@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private Integer merchId;


我尝试使用其他几种解决方法,例如在保存后刷新实体。但是结果是一样的。

        merchantEntity = merchantRepository.saveAndFlush(entity); // still returns null

        merchantEntity = merchantRepository.save(entity);
        merchantRepository.flush();
        MerchantEntity toBeUpdatedMerchantEntity =
                  merchantRepository.findOne(merchantEntity.getId()); // still returns null


是否有可能实现我的期望。非常感谢您的帮助。
谢谢

最佳答案

获取此自动递增的值的唯一方法是刷新记录。

因为JPA仅获取主键,因为必须在EntityManager.persist()之后设置ID。

因此,您必须使用findOne()EntityManager.refresh()重新加载记录

10-07 23:12