おはようございます、私はとクラスサプライヤと呼ばれるクラスがあります。サプライヤは製品の親です。xのインスタンスのJPA識別子が変更されました
注釈付き商品に属性提供者を定義しましたManyToOne。
作成した製品AとサプライヤS1の後、まずS1をAに関連付けます。次に、サプライヤS2を作成しました。サプライヤをS1から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);
よろしく、 ジョン
をなぜ示すコードを投稿していませんあなたは何をしているのですか? – ujulu
ご要望に応じて – John