我正在尝试使用RequestFactory,但我无法更改现有记录。我一直得到一个 org.hibernate.PersistentObjectException:传递给persist的分离实体,而我不明白什么是错的。
我有以下课程:
@Service(Product.class)
public interface ProductRequest extends RequestContext {
Request<Long> countProducts();
Request<ProductProxy> findProduct(Long id);
Request<List<ProductProxy>> findAllProducts();
InstanceRequest<ProductProxy, Void> persist();
InstanceRequest<ProductProxy, Void> remove();
}
我有一个列出所有产品的功能(通过findAllProducts()检索),然后我想更改一个产品。为此,我使用以下代码:
public void changeProductDetails(ProductProxy prod) {
ProductRequest newProductRequest = MyApplication.getRequestFactory().productRequest();
ProductProxy editedProduct = newProductRequest.edit(prod);
editedProduct.setPurpose("new purpose string");
newProductRequest.persist().using(editedProduct).fire(new Receiver<Void>() {
@Override
public void onSuccess(Void arg0)
{
System.out.println("Product changed");
}
});
}
答案 0 :(得分:1)
有什么问题,不应该将persist调用到分离的对象。 persist -method的目的是持久保存新对象。
您要做的是合并分离对象的更改。这是通过Hibernate / JPA中名为 merge 的方法完成的。