【问题标题】:Auto Increment filed not returning value (Not Primary Key) - Spring boot JPA自动增量字段不返回值(非主键) - Spring Boot JPA
【发布时间】:2019-05-28 14:15:18
【问题描述】:

根据我的要求,我的字段具有自动增量&不是键。在调用存储库 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

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

【问题讨论】:

    标签: java spring-boot jpa spring-data-jpa


    【解决方案1】:

    获得这个自动递增值的唯一方法是刷新记录。

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

    所以你必须用findOne()或EntityManager.refresh()重新加载记录

    【讨论】:

    • 嗨,西蒙,感谢您的回复。如示例代码中所述,我已经尝试过使用 findOne() 。它仍然返回一个空值。这是你建议的吗?商家实体=商家存储库.save(实体);商人Repository.flush(); MerchantEntity toBeUpdatedMerchantEntity = MerchantRepository.findOne(merchantEntity.getId()); // 仍然返回 null
    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 2020-07-18
    • 1970-01-01
    • 2011-10-22
    • 2011-06-08
    • 2018-09-06
    • 2012-12-14
    • 2021-05-29
    相关资源
    最近更新 更多