gpt4 book ai didi

java - JPA存储库读取、删除和保存具有旧ID的对象

转载 作者:行者123 更新时间:2023-12-01 19:27:24 26 4
gpt4 key购买 nike

我试图从存储库中读取 Pricebject ID,删除它并使用旧 ID 将其再次保存为新的 PriceObject,但它使用不同的 ID 保存。

这是我的方法:

public void getActualPricesAndSaveInDb() {

try {
String symbolString = symbol.getSymbol();
PriceObject oldPriceObject = pricesRepository.findByCompanySymbol(symbolString);
PriceObject newPriceObject = new PriceObject();
if (oldPriceObject != null) {
pricesRepository.deleteByCompanySymbol(symbolString);
newPriceObject.setId(oldPriceObject.getId());
}
newPriceObject.setCompanySymbol(symbolString);
pricesRepository.save(newPriceObject);
} catch (APICommandConstructionException | APIReplyParseException | APICommunicationException
| APIErrorResponse e) {
e.printStackTrace();
}
}

这是我的PriceObject.class:

@Entity
@Data
public class PriceObject {

@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
Integer id;

@Column(nullable = false)
String companySymbol;

...
}

到目前为止我已经尝试过:

  • change annotation @GeneratedValue parameter for (strategy = GenerationType.AUTO),

  • change annotation @GeneratedValue parameter for (strategy = GenerationType.SEQUENCE).

最佳答案

如果您指定生成 id 的策略,则直接使用实体设置 id 将不起作用。要设置您想要的实体的id,您有两种解决方案(顺便说一下,并非所有可能的解决方案):

  1. id 字段中删除 @GenerateValue 注释,但如果执行此操作,则必须为所需的每个实体提供 id保存。
  2. 直接使用 EntityManager 创建 native 查询。

    entityManager.createNativeQuery("插入表(id,...)值(id,...)");

关于java - JPA存储库读取、删除和保存具有旧ID的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61100053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com