jeudi 5 mars 2015

Spring Data Transaction - No Transaction in progress

I think i'm missing something obvious. Iam trying to make a entity persist into a database via a JUnit Test case, however it doesnt seem to be persisting due to no active transaction.


Configuration:



@Configuration
@EnableTransactionManagement
public class TransactionConfig {

@Inject
private EntityManagerFactory entityMangerFactory;

@Bean
public JpaTransactionManager transactionManager(){
return new JpaTransactionManager(entityMangerFactory);
}


TestCase:



@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = { Application.class })
@ActiveProfiles(CommonConstants.SPRING_PROFILE_TEST)
@IntegrationTest
@WebAppConfiguration
public class UserRepositoryTest {

@Inject
UserRepository userRepo;

@Test
@Rollback(false)
@Transactional("transactionManager")
public void addUser() {
User user = BootstrapDataPopulator.getUser();
userRepo.save(user);
System.out.println(user.getId()); //Successfully outputs the id generate by hibernate
assertNotNull(user.getId());
}
}


^This test case executed successfully however I do not see any entiites persisted in the database as expected.


When I change the from userRepo.save(user) to userRepo.saveAndFlush(user) I get the following exception:



javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.checkTransactionNeeded(AbstractEntityManagerImpl.java:1171)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1332)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


Spring Boot AutoConfiguration Report: http://ift.tt/1Eiiu3d


Names of all Spring Beans Initialized: http://ift.tt/1AFGO9i


Aucun commentaire:

Enregistrer un commentaire