2011-10-07 32 views
0

我正在嘗試使用RequestFactory,但無法更改現有記錄。我一直得到一個org.hibernate.PersistentObjectException:傳遞給持久的分離實體,而我不明白什麼是錯的。使用RequestFactory時傳遞的持久性實體

我有下面的類:

@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"); 
      } 
     }); 
    } 

回答

1

什麼是錯誤的是,堅持不應該被稱爲分離的對象。 堅持的目的 - 方法是堅持新的對象。

你想要做的是從分離的對象合併更改。這是通過Hibernate/JPA中名爲合併的方法完成的。

+0

是的,我剛剛發現問題確實在服務器端,我剛剛得到它的工作。我被所有的例子誤導了,其中只有persist()函數用於... Request類。我現在添加了一個'保存'方法,並且現在就開始工作! – Roalt

相關問題