Было бы полезно, если бы вы показали нам весенний файл context.xml. Но что странно, так это то, что вы используете файл persistence.xml, то есть вы указываете, что хотите использовать JPA, но ваш DAO не использует JPA: он использует собственный Hibernate API.
Я предполагаю, что фабрика сеансов настроена неправильно, потому что вы предполагаете, что она автоматически прочитает файл persistence.xml, что не произойдет, если вы не настроите Hibernate как менеджер сущностей JPA.
EDIT:
Вы объявляете фабрику сеансов в XML, но она сканирует классы в пакете org.adit.spring.hibernate.entity
, который не является пакетом вашей сущности Customer. И вы хотите использовать JPA, поэтому это определение фабричного компонента сеанса не должно существовать.
Вы хотите использовать JPA API, поэтому вы должны внедрить менеджер сущностей в свой DAO вместо внедрения фабрики сеансов. Эта инъекция возможна благодаря вашему определению боба entityManagerFactory
.
Измените свой код DAO на что-то вроде этого:
@Repository("customerDao")
@Transactional
public class CustomerDaoImpl implements CustomerDao {
@PersistenceContext
private EntityManager em;
public void addCustomer(Customer customer) {
customer.setCreatedDate(new Date());
em.persist(customer);
}
public List<Customer> findAllCustomer() {
TypedQuery<Customer> query = em.createQuery("select c from Customer c", Customer.class);
return query.getResultList();
}
}
Прочитайте http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#orm-jpa для получения дополнительной информации.