我有一些服务可以将对象保存到上下文中,并在运行时面对空的EntityManager
@Stateless
public class PointServies {
@PersistenceContext(name="pointProvider",type = PersistenceContextType.EXTENDED)
private EntityManager em;
public void addMovie(Point point) throws Exception {
em.persist(point); // em is null here.
}
}
这是我的 persistence.xml
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="pointProvider">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>model.Point</class>
<properties>
<!-- Configuring JDBC properties -->
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/testdb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="admin" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<!-- Hibernate properties -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
</properties>
</persistence-unit>
看起来PersistenceContext
找不到我的xml......
persistence.xml
存在于“src/META-INF/persistence.xml”中
所有其他来源都位于“src/model/Point”
我尝试在 Tomcat 8 Web 容器上运行此项目。
最佳答案
Tomcat默认不支持EJB,我推荐你add the OpenEJB webapp to Tomcat ,或者使用全栈应用服务器,如 GlassFish或WebLogic Server .
关于java - 为什么Tomcat8环境中EntityManager不通过@PersistenceContext注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31517291/