最近在研究EJB3遇到org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.ni.ejb.Project.users[com.ni.ejb.User] 这个问题,搞了我3个小时,在网上也查了资料,找了些出现这样的错误的原因,不过我都 加了 @Entity, 找来找去找不出原因。
@Entity
@Table(name="Project")
public class Project implements java.io.Serializable {
//略。。
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OrderBy(value = "id ASC")
private Set<User> users = new HashSet<User>();
}
。。。
@Entity
@Table(name = "User")
public class User implements java.io.Serializable {
//略。。
@ManyToOne(cascade = CascadeType.REFRESH, optional = false)
@JoinColumn(name = "pid")
private Project project;
}
没辙了,只好用排除法,删一段代码看看,找别人的一对多的范例来试试,这倒是成功的,后来无意中重起了JBoss,而不是redeploy,结果一 切正常,后来自己想想可能是persistence.xml上hibernate.hbm2ddl.auto 为 update,所以每当服务器重起的时候读入persistence.xml然后映射数据库,而redeploy是不会读入的。