我試圖集成Spring和JSF我堅持持久化對象。我不想處理事務(開始 - 提交等)JPA - 容器管理持久性不會堅持實體-JTA
經過一番google搜索我能找到一個答案給我所需要的in this link
我使用的EclipseLink作爲ORM和Oracle 11g數據庫和GlassFish應用服務器3.1使用Maven 。 我喜歡Spring配置的註釋。我使用
@Transactional
@Service
相關類中的註釋。 我的persistence.xml
名稱是E_DefterManagementPU和我的交易類型是JTA。 這裏是我的代碼堅持efaFunctions
public EntityManager entityManager;
@Inject
public void setEntityManager() {
EntityManagerFactory emf = Persistence.
createEntityManagerFactory("E_DefterManagementPU");
this.entityManager = emf.createEntityManager();
}
public void create(EfaFunctions efaFunctions) {
entityManager.persist(efaFunctions);
}
實體管理器不爲空,我可以看到**分配序列對象**登錄GlassFish的,但也不會產生其他的他的日誌,但如果我寫的下面的代碼與不可見部分與aboe代碼塊相同;
public void create(EfaFunctions efaFunctions) {
entityManager.getTransaction().begin();
entityManager.persist(efaFunctions);
entityManager.getTransaction().commit();
}
它堅持對象。 這個工程,但我不想處理開始()提交()部分和相應的資源與JTA容器管理的持久性應該做到這一點,而不是我。任何機構可以告訴我我錯在哪裏謝謝
你是否在EJB(企業Java Bean)的上下文中進行此操作?如果沒有,則不存在容器管理的事務,並且您必須在代碼中管理事務(這實際上並不那麼糟糕)。 – 2013-05-13 21:34:41
感謝Bailey,實際上我不使用EJB我正在嘗試這個服務層的我的web項目。我的豆子在上面,他們是JSF ManagedBeans.Without EJB的任何知識,我希望我可以正確定義。 – Malcolmxappa 2013-05-13 21:39:56
如果沒有容器管理員,春天如何處理交易而不管理它。對於我沒有受過教育的問題,我可以提供一個春天的項目,它的運行代碼如下: 'protected Class entityClass; @PersistenceContext protected EntityManager entityManager; @Override public T create(T t)this.entityManager.persist(t); return t; }' –
Malcolmxappa
2013-05-13 21:45:36