【发布时间】:2017-10-08 10:29:58
【问题描述】:
大家好,我有一个名为 Product 的课程和一个名为 Supplier 的课程。供应商是产品的父级。
我在带有注释ManyToOne的产品中定义了属性供应商。
创建产品 A 和供应商 S1 后,我先将 S1 与 A 关联。然后,当我尝试将 A 的供应商从 S1 更改为 S2 时,我创建了第二个供应商 S2。 JPA 告诉我“供应商实例的标识符已从 X 更改为 Y”。
我不需要在这里创建/更新供应商。我只想将产品 A 的供应商从一个更改为另一个。
我可以知道哪里出了问题吗?
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@ManyToOne(cascade=CascadeType.ALL)
private Company supplier;
...
}
服务代码:
Product productDB=this.findProductByProductIDCurrentUser(productForm.getId());
dozer.map(productForm, productDB);
if(productForm.getSupplier()!=null){
Company company =
companyRepository.findOne(productForm.getSupplier().getId() );
if(company!=null){
Company supplier = new Company();
supplier.setId(productForm.getSupplier().getId());
productDB.setSupplier(supplier);
}
}
em.merge(productDB);
最好的问候, 约翰
【问题讨论】:
-
为什么不发布一个代码来显示你在做什么呢?
-
根据您的要求
标签: java jpa many-to-one dozer