我正在使用apache open JPA来访问服务器端的数据库。我试图从我的gwt客户端调用服务器以便检索实体对象,但是这个请求总是失败并显示错误消息:NoClassDefFoundError org / apache / openjpa / enhance / PersistenceCapable。
我尝试在gwt.xml文件中定义增强的实体类,但没有帮助:
<set-configuration-property name="rpc.enhancedClasses" value="com.jobsin.domain.SystemUser,com.jobsin.domain.Keyword,com.jobsin.domain.Job">/
我的服务器功能:
public SystemUser getCurrentUser()
throws InvalidUser{
HttpServletRequest httpServletRequest = this.getThreadLocalRequest();
HttpSession session = httpServletRequest.getSession();
SystemUser user=null;
Cookie[] cookies = httpServletRequest.getCookies();
SocialNetworkCookie cookie = network.generateCookieObject();
if(!cookie.init(cookies)){
session.invalidate();
throw new InvalidUser(); // no user was connected, user need to login
}
//try get user details from db
EntityManager em = factory.createEntityManager();
SystemUserDAOImpl userdao = new SystemUserDAOImpl(em);
user = userdao.findUserByNetworkId(cookie.getMemberId());
//make user detach
em.close();
return user;
}
SystemUser类:
@Entity
public class SystemUser implements Serializable
{
/**
*
*/
private static final long serialVersionUID = -1673271845552139219L;
@Id
@GeneratedValue
private long id;
@NotNull
private String firstName;
@NotNull
private String lastName;
@NotNull
@Column(unique=true)
private String email;
@Temporal(TemporalType.TIMESTAMP)
private Date lastSearch;
@ManyToMany(cascade = CascadeType.ALL)
private Set<Job> jobs = new HashSet<Job>();
@ManyToMany(cascade = CascadeType.ALL)
private Set<Keyword> keywords = new HashSet<Keyword>();
}
答案 0 :(得分:0)
最简单的解决方案是将OpenJPA二进制文件添加到GWT客户端类路径。