J'essaie d'utiliser GWT avec RequestFactory et DataNucleus (JPA avec MySQL) mais je ne peux pas le compiler.gwt - requestfactory avec datanucleus avec jpa et rdbms
L'erreur est très étrange dans une classe proxy: UserProxy.java:12: Impossible de trouver la méthode de domaine similaire à longue getId()
Dans ma classe de domaine User.java j'ai une telle méthode. Je me demande où est le problème !!!
BTW J'apprécierais que quelqu'un puisse me montrer le projet avec une configuration similaire (pas avec GAE) et un fichier ant build.xml.
package com.test.shared;
import com.test.domain.User;
import com.google.web.bindery.requestfactory.shared.EntityProxy;
import com.google.web.bindery.requestfactory.shared.EntityProxyId;
import com.google.web.bindery.requestfactory.shared.ProxyFor;
@ProxyFor(User.class)
public interface UserProxy extends EntityProxy {
public long getId();
public void setId(Long id);
public Integer getVersion();
public String getFirstName();
public void setFirstName(String firstName);
public String getLastName();
public void setLastName(String lastName);
public String getEmail();
public void setEmail(String email);
EntityProxyId<UserProxy> stableId();
}
package com.test.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;
@Entity
public class User {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Version
@Column(name = "version")
private Integer version; //require to persist
@NotNull
private String firstName;
@NotNull
private String lastName;
@NotNull
private String email;
public User() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
// -----------------------
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
// get EntityManager
public static final EntityManager entityManager() {
return EMF.get().createEntityManager();
}
// implementing a service in an entity class
public static User findUserByEmail(String email) {
if (email == null) {
return null;
}
EntityManager em = entityManager();
try {
User user = em.find(User.class, email);
return user;
} finally {
em.close();
}
}
public void persist() {
EntityManager em = entityManager();
try {
em.persist(this);
} finally {
em.close();
}
}
public void remove() {
EntityManager em = entityManager();
try {
User attached = em.find(User.class, this.id);
em.remove(attached);
} finally {
em.close();
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Id: ").append(getId()).append(", ");
sb.append("Version: ").append(getVersion()).append(", ");
sb.append("FirstName: ").append(getFirstName()).append(", ");
sb.append("LastName: ").append(getLastName()).append(", ");
sb.append("Email: ").append(getEmail()).append(";");
return sb.toString();
}
}
Donc, si c'est au moment de la compilation alors rien à voir avec DataNucleus ou JPA; ils ne sont pas invoqués jusqu'à l'exécution – DataNucleus