Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 需要一些关于JPQL、JPA和Glassfish的解释来持久化数据吗_Jsp_Jpa_Jpql_Persist - Fatal编程技术网

Jsp 需要一些关于JPQL、JPA和Glassfish的解释来持久化数据吗

Jsp 需要一些关于JPQL、JPA和Glassfish的解释来持久化数据吗,jsp,jpa,jpql,persist,Jsp,Jpa,Jpql,Persist,我是JSP新手,下面是我想知道的。我只是在HTML页面上打印一些数据: ${movie.title} 我有一个Movie实体和一个MovieManagerEntityManager。当我想向电影添加评论(这是另一个实体,review)时,我的servlet在MovieManager中调用这段代码: Movie m = new Movie(//some data...); em.persist(m); 但当我在我的页面上被重定向时,这篇评论并没有立即刷新和打印出来,但我甚至会说可能是30秒后

我是JSP新手,下面是我想知道的。我只是在HTML页面上打印一些数据:

${movie.title}
我有一个
Movie
实体和一个
MovieManager
EntityManager。当我想向电影添加评论(这是另一个实体,
review
)时,我的servlet在MovieManager中调用这段代码:

Movie m = new Movie(//some data...);
em.persist(m);
但当我在我的页面上被重定向时,这篇评论并没有立即刷新和打印出来,但我甚至会说可能是30秒后

我在网上看到了很多东西,主要是:

em.getTransaction().commit();
em.close();
但它们都返回以下错误:

使用JTA时无法使用EntityTransaction

以及:

EJBException,java.lang.IllegalStateException用于关闭


请给我一些我该做什么的建议

servlet是表示层的一部分。它不应该处理JPA。相反,它应该调用服务,实现为EJB并包含业务逻辑,而业务逻辑应该调用DAO,也实现为EJB并包含持久性逻辑,处理实体管理器

服务EJB将在每次调用其方法时自动启动事务(这是使用EJB的主要原因),并在方法返回时自动提交