我仍然在学习如何使用JPA注释来设置这些映射,所以这可能是一个初学者的错误。映射与休眠的关系
我有一个用户类和课程类。在数据库中,每个课程在每一行都有一个用户外键(将用户视为教授课程的教师)。所以每个用户可以有多个课程,但每个课程只有一个用户。
在映射这些类我已经写以下以下代码:
@Entity
public class User extends BaseModel {
@OneToMany(mappedBy="course")
private Collection<Course> courses;
public void setCourses(Collection<Course> courses) { this.courses = courses; }
public Collection<Course> getCourses() { return courses; }
}
@Entity
public class Course extends BaseModel {
@ManyToOne
@JoinColumn(name="user_id")
private User user;
public void setUser(User user) { this.user = user; }
public User getUser() { return user; }
}
我已经省略了不相关的字段和BaseModel只是占每个表中的主键。 这里有什么是公然错误的吗?如果不是什么将是一个好方法去调试这样的问题。
我在尝试调用用户表上的select时收到NullPointerException。但是,当我在User类中取出对Course类的引用时,一切正常。
有问题的线在我的DAO类中。实体管理器可能无法初始化。这是代码。
Query query = Stripersist.getEntityManager().createQuery(getQuery(fieldName, null)).setParameter(fieldName, value);
的createQuery()只是返回:
String query = "FROM " + entityClass.getName() + " t WHERE t." + fieldName + " = :" + fieldName;
我使用的条纹框架,Hibernate和Stripersist如果提供任何进一步的线索,什么是错的。
他们,你没有告诉你的问题是什么 – Bozho 2009-12-27 19:36:40
我得到了方面跟踪,并遗漏了最重要的部分。 – stewart 2009-12-27 19:44:27
now,you did,show us the code that given the NullPointerException(find the code by the line number in the exception stacktrace) – Bozho 2009-12-27 19:45:28