【发布时间】:2018-04-26 17:06:55
【问题描述】:
我如何确定对象是否已经存在而不是再次创建。
@Component
public class ProductServiceImpl implements ProductService
{
@PersistenceContext
private EntityManager em;
public Product getOrCreateProduct(String productName, String peoductDescr)
{
Product product =(new Product (productName, peoductDescr));
em.merge(product);
return product;
}
}
我是这样做的,但它仍然会继续创建新的数据库条目,而不是返回新的条目。
【问题讨论】:
-
实体通过它们的主键来区分。只有当产品名称(或描述,或两者一起)是 PK 时,您的方法才能避免创建重复项。
-
此外,如果 PK 只是项目名称,那么您的方法将破坏数据库中已有产品的现有产品描述。
标签: java spring hibernate-entitymanager