0

我正在尝试使用 RequestFactory,但在更改现有记录时遇到了麻烦。我不断收到org.hibernate.PersistentObjectException: detached entity pass to 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");
            }
        });
    }
4

1 回答 1

1

问题是,不应该对分离的对象调用持久化。persist方法的目的是持久化新对象。

您要做的是合并来自分离对象的更改。这是通过Hibernate/JPA 中名为merge的方法完成的。

于 2011-10-07T14:31:36.750 回答