【问题标题】:Spring-Boot with JPA don`t keep Id使用 JPA 的 Spring-Boot 不保留 ID
【发布时间】:2017-01-20 02:47:57
【问题描述】:

我需要在我的数据库中插入一条记录,但在某些情况下我需要传递 ID,但是当我手动插入我的 id 时,spring-boot 不会使用此 ID 保存,spring-boot 会从序列

这是我的实体

 @Entity
@Table(schema = "db_cartorio_inteligente",  name = "tb_movimentacao")
@SequenceGenerator(sequenceName="db_cartorio_inteligente.tb_movimentacao_seq", name = "tb_movimentacao_seq")
public class TbMovimentacao {
    @Id
    @GeneratedValue(strategy= GenerationType.SEQUENCE, generator = "tb_movimentacao_seq")
    private Long idMovimentacao;

这是我要保存的代码:

TbMovimentacao novaMovimentacao = new TbMovimentacao();
novaMovimentacao.setIdMovimentacao(12323);
this.movimentacaoRepository.save(novaMovimentacao);

而是用 id 12323 保存,他从我的序列中得到了下一个

【问题讨论】:

  • 我认为您可能需要为此创建自己的Id 生成器,检查this 问题,它为您的用例提供了一些解决方案。
  • 供您参考:stackoverflow.com/questions/31158509/…。由于持久性提供程序在插入之前分配主键,它会覆盖之前设置的值

标签: spring-boot jpa spring-data-jpa id-generation


【解决方案1】:

您将其定义为使用生成器,因此它将按照您的要求生成 id。你先设置它是没有意义的。如果要设置生成器,请删除它

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2016-09-18
    相关资源
    最近更新 更多