Estou desenvolvendo uma aplicação para rodar no Google App Engine que utiliza JDO para persistencia.
Consigo fazer consultas e inserções normalmente, mas ao tentar atualizar uma entidade, o JDO grava um novo registro, como se eu fizesse uma inserção.
Segue o código:
// Método que uso para persistir o objeto
public void saveCustomer(Customer customer) {
PersistenceManagerFactory pmf = PMF.get();
PersistenceManager pm = pmf.getPersistenceManager();
try {
pm.makePersistent(customer);
}
finally {
pm.close();
}
}
// Essa é a classe que estou tentando persistir
@PersistenceCapable
public class Customer implements Serializable {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.SEQUENCE)
private Long id;
@Persistent
private String name;
public Customer() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
Um detalhe: A instancia de Customer que eu passo para o método saveCustomer() não é obtida pelo JDO. Ela é recebida através de uma chamada remota feita pelo mecanismo de RPC do GWT.
O que posso estar fazendo de errado?