@ManagedBean问题获取关系数据

dope9967

我有一个奇怪的问题,它引发的不是真正有用的错误。我正在尝试在Primefaces表中显示来自Entity Bean的数据。我有两个项目,一个用于前端,另一个用于后端。问题是,实体Bean具有@OneToMany@ManyToOne关系,并且它们似乎引起了问题,因为如果我null没有错误发生,但是我需要该数据,因此这不是解决方案。

后端:

实体的关键部分:

    @Entity
    @Table(name = "business_process_tasks")
    public class BusinessProcessTasks implements java.io.Serializable {
    ....
        @ManyToOne(fetch=FetchType.EAGER)
        @JoinColumn(name="process")
        public Process getProcess() {
        return process;
        }

        public void setProcess(Process process) {
            this.process = process;
        }

        @OneToMany(mappedBy = "processTask")
        public List<BusinessProcessTasksMeta> getMeta() {
            return meta;
        }

        public void setMeta(List<BusinessProcessTasksMeta> meta) {
            this.meta = meta;
        }
    }

EJB的关键部分:

@Override
public List<BusinessProcessTasks> getList(int processId) {
    EntityManager em = emf.createEntityManager();

    String q = "SELECT t from " + BusinessProcessTasks.class.getName() + " t where process="+processId;
    Query query = em.createQuery(q);
    List<BusinessProcessTasks> items = query.getResultList();

    for(int i = 0;i<items.size();i++){
        BusinessProcessTasks t = (BusinessProcessTasks) items.get(i);
                    //IF I SET THESE TO NULL NO ERRORS SHOW
        t.setProcess(null);
        t.setMeta(null);
    }

    em.close();
    return items;
}

前端:

关键部分@ManagedBean

@ManagedBean(name = "processTasksTableBean")
@ViewScoped
public class ProcessTasksTableBean {
    .....
    @PostConstruct
    void initialiseSession() {
        System.out.println("Bean running");

        FacesContext.getCurrentInstance().getExternalContext().getSession(true);
            //GETTING ID FROM URL
        HttpServletRequest request = (HttpServletRequest) FacesContext
                .getCurrentInstance().getExternalContext().getRequest();
        pageProcessId = Integer.parseInt(request.getParameter("id"));

        processTasksBeanRemote = doLookup();
        //ONLY PLACE IN PROJECT WHERE ERROR IS REFERENCED IN CONSOLE IS HERE
        processTasksList = processTasksBeanRemote.getList(pageProcessId);
    }
.....
}

Eclipse控制台-日志很长,如果需要,我将全部发布,现在只是关键部分:

09:34:58,377 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost-127.0.0.1-8189-3) Error Rendering View[/ProcessTasks.xhtml]: java.lang.IllegalStateException: JBAS011048: Failed to construct component instance
Caused by: java.lang.RuntimeException: ClassNotFoundException marshaling EJB parameters
Caused by: java.lang.ClassNotFoundException: org.hibernate.collection.internal.PersistentBag from [Module "deployment.bpmweb.war:main" from Service Module Loader]
09:34:58,403 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/bpmweb].[Faces Servlet]] (http-localhost-127.0.0.1-8189-3) Servlet.service() for servlet Faces Servlet threw exception: java.lang.ClassNotFoundException: org.hibernate.collection.internal.PersistentBag from [Module "deployment.bpmweb.war:main" from Service Module Loader]
dope9967

问题已解决,我从http://mvnrepository.com/artifact/org.hibernate/hibernate-core/4.3.4下载了最新的Hibernate核心,最终一切正常。非常奇怪,因为我通过构建路径将Jboss运行时库添加到每个项目中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章