使用JpaRepository保存实体后,无法获得自动生成的ID值

时间:2019-02-19 19:26:18

标签: oracle jpa orm spring-data-jpa sequence

在我的Entity类(称为RpaAudit)中,这就是我定义主键的方式(该主键是使用称为SEQ_AUDIT_ID的序列自动生成的)。

@Entity
@Table(name = "RPA_AUDIT")
public class RpaAudit {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_AUDIT_ID")
@SequenceGenerator(sequenceName = "SEQ_AUDIT_ID", name = "SEQ_AUDIT_ID")
@Column(name="AUDIT_ID", unique = true, nullable = false)
private Integer auditId;

当我将实体保存在saveAndFlush()类中时,我正在使用JpaRepository的@Service方法。

这里是这样的:

    @Transactional
    private RpaAudit dbOperations(Message msg) {

    RpaAudit entity = new RpaAudit();
    entity.setCreatedBy(msg.getOwner());
    entity.setInstanceId(msg.getInstanceId());
    entity.setWorkCaseId(msg.getWorkCaseId());
    entity.setTaskId(getRandomTaskId());
    entity.setTaskName(msg.getTaskName());
    entity.setStatus("A");

    RpaAudit savedEntity = rpaAuditRepo.saveAndFlush(entity);

    return savedEntity;
}

现在,当我执行savedEntity.getAuditId()时,我会得到一个完全随机的值。

在Db中,AUDIT_ID列的值是148(遵循顺序),但是当我执行savedEntity.getAuditId()时,我得到的值是7200(我不知道它是如何产生的,不遵循我在Oracle数据库中创建的顺序。

不确定该值来自何处。

请帮助。

0 个答案:

没有答案