отсоединенная сущность передана для сохранения при использовании RequestFactory - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь использовать RequestFactory, но у меня возникают проблемы при изменении существующих записей.Я продолжаю получать org.hibernate.PersistentObjectException: отдельная сущность передана для сохранения , пока я не понимаю, в чем дело.

У меня есть следующий класс:

@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 Ответ

1 голос
/ 07 октября 2011

Что не так, так это то, что persist не следует вызывать для отдельных объектов. Целью persist -метода является сохранение новых объектов.

То, что вы хотите сделать, это объединить изменения из отсоединенного объекта. Это делается с помощью метода с именем merge в Hibernate / JPA.

...