2013-11-30 2 views
0

Я использую JBoss 7.1 AS в своем приложении, JPA, Hibernate и MySql DB, я все хорошо настроил, и моя программа извлекает данные из нормального db. Проблема в том, что я пытаюсь вставить некоторые данные. Я узнал, что это нормально, что JTA EntityManager не может использовать get Transaction, поэтому мой вопрос: как я могу вставить некоторые данные в свой db? Не знаю, как работает Spring, поэтому не указывайте мне, пожалуйста, если это не так просто.Как вставить некоторые данные при использовании JTA Entity Manager

моя настойчивость выглядит, что теперь:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence      
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
     version="2.0"> 
    <persistence-unit name="EngineProject" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 



     <jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source> 
     <class>org.itdevelopment.DAO.User</class> 


    <properties> 

     <property name="hibernate.show.sql" value="true" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
     <property name="hibernate.hbm2ddl.auto" value="create" /> 
    </properties> 
    </persistence-unit> 

и мой, что им пытаются сделать, это просто вставить некоторые данные в ManagedBean, класс пользователя, аа метод:

 em.getTransaction().begin(); 

     User employee = new User(); 
     employee.setId(23); 
     employee.setCompany("Coca cola");; 
     employee.setLogin("James"); 

     em.persist(employee); 
     em.getTransaction().commit(); 

как я уже сказал, возвращается: JTA EntityManager не может использовать getTransaction() Так как же я могу что-то вставить?

спасибо. M

+2

Вы используете внутри контейнера Java EE с полным стеком, используя JTA. Декларативные транзакции поддерживаются. Просто сделайте свои компоненты сессионными компонентами без состояния, и у вас будут транзакции без необходимости явно запускать транзакции фиксации и отката. –

ответ

0

Если вы хотите использовать Spring framework, то вам нужно правильно настроить весенний контейнер. Pleae обеспечивает конфигурацию пружин и здесь содержится контент класса DAO.

Вот ссылка, как сделать это правильно

http://docs.spring.io/spring/docs/3.0.x/reference/orm.html#orm-hibernate

В общем случае вам просто нужно

1.Configure весной и зимуют должным образом методы 2.Mark DAO как @Transactional с требуется модификатор

Также обратите внимание на проект Spring Data, который имеет из коробки решение для Hibernate

http://projects.spring.io/spring-data/

+0

OP работает внутри контейнера Java EE. Он не использует Весну, и это не нужно. –

Смежные вопросы