gwt-带datanucleus和jpa和rdbms的requestfactory
我试图将GWT与RequestFactory和DataNucleus(JPA与MySQL)结合使用,但我无法编译它 代理类中的错误非常奇怪:UserProxy.java:12:找不到类似于long getId()的域方法 在我的域类User.java中,我有这样一个方法。 我想知道问题出在哪里 顺便说一句,如果有人能向我展示具有类似配置(不是GAE)和ant build.xml文件的项目,我将不胜感激gwt-带datanucleus和jpa和rdbms的requestfactory,gwt,jpa,datanucleus,requestfactory,build.xml,Gwt,Jpa,Datanucleus,Requestfactory,Build.xml,我试图将GWT与RequestFactory和DataNucleus(JPA与MySQL)结合使用,但我无法编译它 代理类中的错误非常奇怪:UserProxy.java:12:找不到类似于long getId()的域方法 在我的域类User.java中,我有这样一个方法。 我想知道问题出在哪里 顺便说一句,如果有人能向我展示具有类似配置(不是GAE)和ant build.xml文件的项目,我将不胜感激 package com.test.shared; import com.test.domai
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();
}
}
package com.test.shared;
导入com.test.domain.User;
导入com.google.web.bindery.requestfactory.shared.EntityProxy;
导入com.google.web.bindery.requestfactory.shared.EntityProxyId;
导入com.google.web.bindery.requestfactory.shared.ProxyFor;
@ProxyFor(User.class)
公共接口UserProxy扩展EntityProxy{
公共长getId();
公共无效设置id(长id);
公共整数getVersion();
公共字符串getFirstName();
public void setFirstName(字符串firstName);
公共字符串getLastName();
public void setLastName(字符串lastName);
公共字符串getEmail();
公共电子邮件(字符串电子邮件);
EntityProxyId stableId();
}
包com.test.domain;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.EntityManager;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.Version;
导入javax.validation.constraints.NotNull;
@实体
公共类用户{
@身份证
@列(name=“id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@版本
@列(name=“version”)
私有整数版本;//需要持久化
@NotNull
私有字符串名;
@NotNull
私有字符串lastName;
@NotNull
私人字符串电子邮件;
公共用户(){
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共整数getVersion(){
返回版本;
}
公共void setVersion(整数版本){
this.version=版本;
}
// -----------------------
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
//获取实体管理器
公共静态最终EntityManager EntityManager(){
返回EMF.get().createEntityManager();
}
//在实体类中实现服务
公共静态用户findUserByEmail(字符串电子邮件){
如果(电子邮件==null){
返回null;
}
EntityManager em=EntityManager();
试一试{
User=em.find(User.class,email);
返回用户;
}最后{
em.close();
}
}
公共图书馆{
EntityManager em=EntityManager();
试一试{
坚持(这个);
}最后{
em.close();
}
}
公共空间删除(){
EntityManager em=EntityManager();
试一试{
User attached=em.find(User.class,this.id);
em.移除(附加);
}最后{
em.close();
}
}
@凌驾
公共字符串toString(){
StringBuilder sb=新的StringBuilder();
sb.append(“Id:”).append(getId()).append(“,”);
sb.append(“版本:”).append(getVersion()).append(“,”);
sb.append(“FirstName:”).append(getFirstName()).append(“,”);
sb.append(“LastName:”).append(getLastName()).append(“,”);
附加(电子邮件:).append(getEmail()).append(;);
使某人返回字符串();
}
}
Long
不是Long
。选择一个或另一个,但在域类和EntityProxy中使用相同的方法,我希望自动装箱能够处理代理中的“public long getId()”和DTO中的“public long getId()”之间的差异,但也许您可以尝试更改它们,使它们都返回“long”或都返回“long”.因此,如果是在编译时,则与DataNucleus或JPA无关;在运行时之前不会调用它们如果getId()
返回null
,您会期望什么行为<代码>空点异常?序列化时是否在服务器上?或者在反序列化时在客户端上?当然,我不希望从getId()
中得到null;至于我所期望的射频,如果有一个空。。。我不会有固定的期望,虽然我希望它将采取任何最便宜的实现过程(即,射频开发人员的最低代码和工作)。