我想使用GWT与RequestFactory和DataNucleus(与MySQL的JPA),但我无法编译它。gwt - 数据与jpa和rdbms datanucleus requestfactory
的错误是在代理类很奇怪:UserProxy.java:12:找不到类似长的getId()
在我的领域类User.java我有这样一个方法域方法。 我想知道问题在哪里!
顺便说一句,如果有人能够向我展示具有类似配置(不包括GAE)和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();
}
}
所以如果它在编译时与DataNucleus或JPA无关;它们不会在运行时调用 – DataNucleus