Quantcast
Channel: Spring Community Forums - Data
Viewing all articles
Browse latest Browse all 297

JTATransactionManager Not Committing To Database

$
0
0
Hi
I will be working with a database and with a JMS queue so I decided to use JTATransactionManager (multiple resources).
I am using Spring Framework 3.2.3.RELEASE
Hibernate 4.2.1.Final
Glassfish 3.1.2.2

With JTATransactionManager nothing is committed to db.I tried JPATransactionManager it works fine.I don't get any exceptions with JTATransactionManager.Any idea what I am doing wrong?Thanks.

This is a piece of jpa config file
Code:

<jee:jndi-lookup id="dataSource" jndi-name="Test" />

<bean id="entityManagerFactory"
  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
      p:packagesToScan="com.pinkshield.jpaTest.domain"
      p:dataSource-ref="dataSource"
      p:jpaPropertyMap-ref="jpaPropertyMap"
      p:jpaVendorAdapter-ref="hibernateVendor" />


<util:map id="jpaPropertyMap">
    <entry key="hibernate.hbm2ddl.auto" value="validate" />
    <entry key="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
    <entry key="transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
    <entry key="transaction.manager_lookup_class"
        value="org.hibernate.transaction.SunONETransactionManagerLookup" />
</util:map>

<bean id="hibernateVendor"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
    p:showSql="true" />

<tx:jta-transaction-manager />

<tx:annotation-driven/>

<context:component-scan base-package="com.pinkshield.jpaTest" />

This is my Generic Dao for JPA
Code:

package com.pinkshield.jpaTest;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

public class GenericDaoJpa<T> implements GenericDao<T>
{

private Class<T> queryClass;
protected EntityManager entityManager;

@PersistenceContext
public void setEntityManager(EntityManager entityManager)
{
    this.entityManager = entityManager;


public GenericDaoJpa(Class<T> queryClass)
{
    super();
    this.queryClass = queryClass;
}

public T getNewInstance()
{
    try
    {
        return getQueryClass().newInstance();
    }
    catch (InstantiationException e)
    {
        throw new RuntimeException("Error creating new instance of : " + getQueryClass().getName(), e);
    }
    catch (IllegalAccessException e)
    {
        throw new RuntimeException("Error creating new instance of : " + getQueryClass().getName(), e);
    }
}

public Class<T> getQueryClass()
{
    return queryClass;
}   

public T get(Long id)
{
    if (id == null)
    {
        return null;
    }
    else
    {
        return entityManager.find(queryClass, id);
    }
}

@SuppressWarnings("unchecked")
public List<T> getAll()
{
    return entityManager.createQuery("select o from " + queryClass.getName() + " o").getResultList();
}

public void save(T object)
{
    entityManager.persist(object);
}

public void update(T object)
{
    entityManager.merge(object);
}

public void delete(T object)
{
    entityManager.remove(entityManager.merge(object));
}
}

This is UserDao
Code:

@Repository
public class UserDao extends GenericDaoJpa<User>
{
public UserDao()
{
    super(User.class);
}
}

And this is my service code

Code:

@Service
 public class UserServiceImpl implements IUserService{

@Autowired UserDao userDao;

@Override
@Transactional
public void saveUser(String name, String lastName)
  {
    User user=new User();
    user.setLastName(lastName);
    user.setName(name);

    userDao.save(user);
  }
 }


Viewing all articles
Browse latest Browse all 297

Trending Articles