1)不同的名稱創建您的persistence.xml
幾個持久單位。
2)創建的EntityManagerFactory
S(1每持久性單元)必要數量和指定應用於混凝土廠,其持久性單元:
<bean id="authEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="SpringSecurityManager"/>
</bean>
3)創建的TransactionManager
小號必要數量:
<bean id="authTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="authEntityManagerFactory" />
</bean>
4)在你的DAO的類指定與持久化單元(等與EntityManagerFactory的),你想工作:
public class AbstractAuthDao<T> {
@PersistenceContext (unitName = "SpringSecurityManager")
protected EntityManager em;
...
}
5)在服務對象指定事務管理器應使用(此功能只支持在Spring 3.0):
@Transactional (value = "authTransactionManager", readOnly = true)
public class UserServiceImpl implements UserService {
...
}
6)如果你在你的web.xml有OpenEntityManagerInViewFilter
,然後指定其必需的EntityManagerFactory的init-param名稱(或創建幾個帶有相應init-blocks的過濾器):
<init-param>
<param-name>entityManagerFactoryBeanName</param-name>
<param-value>authEntityManagerFactory</param-value>
</init-param>
誰說OP使用Spring? :) –
我在編輯問題之前提出了這個建議。 – Roman
公平起見,我從來沒有在原帖中提到過Spring,編輯只是添加了更多信息,但是這引出了一個似乎是工作的答案,所以它已被接受。 – kgrad