我在netbeans中用derby创建了示例数据库。
我生成了persistence.xml
我从数据库生成了实体类。
我创建了
courseDAO
@Stateless
public class courseDAO {
@PersistenceContext
EntityManager em;
public courseDAO(){}
public List<Course> getCourses(){
return em.createNativeQuery("Select * From Course", Course.class).getResultList();
}
}
工厂类
@Stateless
public class courseFactory {
@Inject
courseDAO course;
public courseFactory() {
}
public List<Course> getCourses(){
return course.getCourses();
}
}
和应该照顾它的路线
@Path("course")
public class courseRoute {
@Inject
courseFactory courseFactory;
@GET
public String hi(){
List<Course> l = courseFactory.getCourses();
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
return gson.toJson(l);
}
}
然而,当我在路线上运行项目并创建获取请求时,它会抛出
javax.servlet.ServletException:MultiException有1个例外。 他们是: 1. org.glassfish.hk2.api.UnsatisfiedDependencyException:没有可用于注射的对象 SystemInjecteeImpl(requiredType = courseFactory,父= courseRoute,限定符= {},位置= -1,可选=假,自我=假,不合格= NULL,6181406) 根本原因
MultiException有1个例外。他们是: 1. org.glassfish.hk2.api.UnsatisfiedDependencyException:没有可用于注射的对象 SystemInjecteeImpl(requiredType = courseFactory,父= courseRoute,限定符= {},位置= -1,可选=假,自我=假,不合格= NULL,6181406) 根本原因
org.glassfish.hk2.api.UnsatisfiedDependencyException:没有 可用于注射的物体 SystemInjecteeImpl(requiredType = courseFactory,父= courseRoute,限定符= {},位置= -1,可选=假,自我=假,不合格= NULL,6181406)
然而,当我从courseFactory
中移除无状态并在courseRoute中创建其实例时,例如
courseFactory c = new courseFactory()
List<Course> l = c.getCourses();
抛出nullpointerException。
我一直在努力解决这个问题,但每当我创建另一个错误时,修复它的正确方法是什么?
答案 0 :(得分:0)
我想您在DAO中声明了一个属性,如下所示:
private List<Course> courses;
public List<Course> getCourses(){
return course.getCourses();
}
所以要解决这个问题,你应该像这样初始化你的列表:
private List<Course> courses = new ArrayList<>();
修改强>
或者在你的getter中返回一个初始化List:
public List<Course> getCourses(){
course.getCourses() = new ArrayList<>();
return course.getCourses();
}
希望这可以帮到你。