My sincere apologies for post such a crap code
My JpaDao class is
Code:
public final class JpaMessageDao extends JpaDaoSupport {
public long count() {
return (Long) getJpaTemplate().execute(new JpaCallback() {
public Object doInJpa(final EntityManager em) throws PersistenceException {
Query q = em.createNamedQuery("MessageEntity.count");
return q.getSingleResult();
}
});
}
public void create(final MessageEntity message) {
getJpaTemplate().persist(message);
}
}
My junit test case for aJpaDaoclass
Code:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:context1.xml" })
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional
public class JpaMessageDaoTest {
@Autowired
private JpaMessageDao jpaMessageDao;
@Test
public void daoCreate() throws Exception {
for (int i = 1; i <= 10; i++) {
jpaMessageDao.create(new MessageEntity(String.format("Message %s",
i)));
}
assertEquals(10, jpaMessageDao.count());
}
@Test
public void daoRead() throws Exception {
List<MessageEntity> messages = jpaMessageDao.read(1, 2);
assertNotNull(messages);
assertEquals(2, messages.size());
}
}
My context1.xml is
Code:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />
<property name="url" value="jdbc:derby:MyData; create=true" />
<property name="url" value="jdbc:derby://localhost:1527/MyDb;create=true"></property>
<property name="username" value="heyday" />
<property name="password" value="heyday" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.DerbyDialect" />
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
</props>
</property>
</bean>
<bean name="jpaMessageDao"
class="org.adrianwalker.maven.skeleton.spring.jpa.JpaMessageDao">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
am am getting an error of
"Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.Dependenc yInjectionTestExecutionListener@62ac70ab] to prepare test instance [org.adrianwalker.maven.skeleton.spring.jpa.JpaMess ageDaoTest@25ed7c33]
java.lang.IllegalStateException: Failed to load ApplicationContext"
when i use embedded driver its working properly
thanks