Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с Transaction, Spring 
:(
    Опции темы
hamsterKSU
Дата 7.6.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 3
Всего: 11



в JpaTemplate не хочет работать persist
вот applicationContext.xml
Код

<bean
        class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
    
    <jee:jndi-lookup id="entityManagerFactory"
        jndi-name="java:jpa/myEntityMng" />

    <bean name="daoAuthor"
        class="com.dataart.gdubina.web.dao.DaoAuthorImpl">
        <property name="entityManagerFactory"
            ref="entityManagerFactory">
        </property>
    </bean>

    <bean name="daoBook"
        class="com.dataart.gdubina.web.dao.DaoBookImpl">
        <property name="entityManagerFactory"
            ref="entityManagerFactory">
        </property>
    </bean>

    <bean name="transactionManager"
        class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory"
        ref="entityManagerFactory" />
        </bean> 


    <bean name="service"
        class="com.dataart.gdubina.web.service.DaoService">
        <property name="daoAuthor" ref="daoAuthor"></property>
        <property name="daoBook" ref="daoBook"></property>
    </bean>
    
    <tx:annotation-driven />

вызываю метод класса
Код

public class DaoAuthorImpl extends DaoEntityImpl<Author> implements DaoAuthor

вызывается метод
Код

public Author addAuthor(String name,String surname){
    Author a = new Author(name,surname);
    this.save(a);
    return a;
}

где в классе 
Код

public class DaoEntityImpl<T> extends JpaDaoSupport implements DaoEntity<T>

реализован метод
Код

@Transactional(readOnly=false)
public void save(T entity) {
  getJpaTemplate().persist(entity);
}

причем используется анатация @Transactional что по сути должно было посути сделать JpaTemplate транзакционным.
2 дня уже бьюсь над проблемой. вся надежда на вас граждане. smile
PM MAIL ICQ   Вверх
kosmonaFFFt
Дата 25.3.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Ап...
Столкнулся с той-же проблемой...
Имеется:
Код

import dao.interfaces.JfrmUserDAO;
import entityes.JfrmUser;
import javax.persistence.EntityManager;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.orm.jpa.support.JpaDaoSupport;

/**
 *
 * @author kosmonaffft
 */
@Transactional(propagation = Propagation.REQUIRED)
public class JfrmUserDAOImpl extends JpaDaoSupport implements JfrmUserDAO {

    public JfrmUser findByName(String username) {
        return null;
    }

    public void addUser(JfrmUser user) {
        EntityManager em = getJpaTemplate().getEntityManagerFactory().createEntityManager();
        //em.getTransaction().begin();
        em.persist(user);
        //em.getTransaction().commit();
    }
}


Код

<bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="/WEB-INF/jdbc.properties" />

    <bean id="jfrmDataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="${jdbc.driverClassName}"
          p:url="${jdbc.url}"
          p:username="${jdbc.username}"
          p:password="${jdbc.password}" />

    <bean id="emFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
          p:dataSource-ref="jfrmDataSource"  />

    <bean id="txManager"
          class="org.springframework.orm.jpa.JpaTransactionManager"
          p:entityManagerFactory-ref="emFactory" />

    <tx:annotation-driven transaction-manager="txManager" />

    <bean id="jfrmUserDAO"
          class="dao.impls.JfrmUserDAOImpl"
          p:entityManagerFactory-ref="emFactory" />


Если создавать транзакцию вручную (закомментированные строки), то все работает, иначе объект просто не добавляется в базу...


--------------------
user posted image
PM MAIL ICQ   Вверх
afon
Дата 27.3.2010, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 5.4.2008
Где: Украина, Киев

Репутация: нет
Всего: 1



смахивает на то, что вы вызываете em.persist(user) а не свой аннотированный транзакцией save(T entity)

по второму примеру в методе addUser: я не использовал JpaDaoSupport, но что-то мне подсказывает, что вам не нужно делать 
EntityManager em = getJpaTemplate().getEntityManagerFactory().createEntityManager();
а использовать getJpaTemplate() напрямую. То есть, например getJpaTemplate().create(user, JfrmUser.class), тогда заведутся ваши транзакции.

Это сообщение отредактировал(а) afon - 27.3.2010, 18:06
PM MAIL WWW   Вверх
kosmonaFFFt
Дата 28.3.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Точно, завелись... Спасибо...


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.