gpt4 book ai didi

java - hibernate Spring Data JPA如何保存带有id的对象

转载 作者:行者123 更新时间:2023-11-29 16:45:03 25 4
gpt4 key购买 nike

public class ProductInfo {

@Id
private String productId;

/** 名字. */
private String productName;

/** 单价. */
private BigDecimal productPrice;
...
<小时/>
    @Test
public void saveTest() {
ProductInfo productInfo = new ProductInfo();
productInfo.setProductId("123456");
productInfo.setProductName("皮蛋粥");
productInfo.setProductPrice(new BigDecimal(3.2));
productInfo.setProductStock(100);
productInfo.setProductDescription("很好喝的粥");
productInfo.setProductIcon("http://xxxxx.jpg");
productInfo.setProductStatus(0);
productInfo.setCategoryType(3);

// ProductInfo result = repository.save(productInfo);
ProductInfo result = repository.saveAndFlush(productInfo);
Assert.assertNotNull(result);
}

我想保存一个带有ID的对象,该对象没有记录在数据库中。

Hibernate: 
select
productinf0_.product_id as product_1_3_0_,
productinf0_.category_type as category2_3_0_,
productinf0_.create_time as create_t3_3_0_,
productinf0_.product_description as product_4_3_0_,
productinf0_.product_icon as product_5_3_0_,
productinf0_.product_name as product_6_3_0_,
productinf0_.product_price as product_7_3_0_,
productinf0_.product_status as product_8_3_0_,
productinf0_.product_stock as product_9_3_0_,
productinf0_.update_time as update_10_3_0_
from
product_info productinf0_
where
productinf0_.product_id=?
Hibernate:
update
product_info
set
create_time=?,
product_price=?,
update_time=?
where
product_id=?

根据hibernate的规则,在update时不可能通过先选择ID号的对象来将数据保存到数据库中。我该怎么做?谢谢您的回答。

最佳答案

通过阅读 Hibernate 文档,保存操作仅保留具有自动生成 id 的实体。因此,如果您打算自己设置 id,那么您需要的就是更改 persist 的插入方法。

@Test
public void saveTest() {
ProductInfo productInfo = new ProductInfo();
productInfo.setProductId("123456");
productInfo.setProductName("皮蛋粥");
productInfo.setProductPrice(new BigDecimal(3.2));
productInfo.setProductStock(100);
productInfo.setProductDescription("很好喝的粥");
productInfo.setProductIcon("http://xxxxx.jpg");
productInfo.setProductStatus(0);
productInfo.setCategoryType(3);

// Insert new product.
repository.persist(productInfo);
}

有关更多信息,您可以查看此 blog

关于java - hibernate Spring Data JPA如何保存带有id的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142938/

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