我有一个 Java 应用程序,我曾经用内存中的 Derby 驱动程序使用这个持久性单元进行测试:
<persistence-unit name="TestPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.url" value="jdbc:derby:memory:ProjectDB"/>
<property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.connection.username" value=""/>
<property name="hibernate.connection.password" value=""/>
</properties>
现在我添加了一个 EJB 服务层,从那以后我一直无法在内存数据库中使用相同的持久性单元来编写工作。以下工作正常,但我想把它放在内存中
<persistence-unit name="moduleNamePU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/sample</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
如何更改第二个持久性单元以便在内存数据库中使用?
编辑:作为 EJB 容器,我使用 Glassfish 3.1
实体服务:
@Stateless
@Local(value=EntityServiceLocal.class)
public class EntityService implements EntityServiceLocal {
@EJB
private EntityDaoLocal entityDao;
@Resource
private SessionContext ctx;
public void setEntityDao(EntityDaoLocal entityDao) {
this.entityDao = entityDao;
}
}
道层服务:
@Stateless
public class EntityDao implements EntityDaoLocal {
@PersistenceContext
private EntityManager em;
}