I am working with STS in eclipse Juno ,Spring 3.1.1 ,hibernate 4.1, tomcat 7 and mySQL.
I created a simple MVC template project. my purpose is that the user will enter some data to a form, and that data will
be saved in the database.
I have created:
web layer:
1. the simple form.
2. the controller which recieve the data from the form and pass it to the service layer.
service layer:
a service class which contains a DAO field and operate a dao method.
data access layer:
1. A mock DAO implementation which doesn't commincate with the database.
2. A Real DAO implementation which doesn commincate with the database.
When i checked the system with the mock DAO implementation, everything was OK - going from the web layer to the mock DAO.
but when injected the real DAO, i just got an 404 error, and nothing in the happened in the Database.
I will show only the DAO implementation and the root-context.xml because this is where i think the problem.
My DAO Implementation:
This is my root-context.xml:Code:@Repository public class Presentation_page_dao_hibernate_Impl implements Presentation_page_dao { private SessionFactory sessionFactory; @Autowired public Presentation_page_dao_hibernate_Impl(SessionFactory sessionFactory) { this.sessionFactory=sessionFactory; System.out.println("Hi! i'm in ActionDao_HibernateImpl constructor"); } private Session currentSession() { return sessionFactory.getCurrentSession(); } public void create(Presentation_page pp) { currentSession().beginTransaction(); currentSession().save(pp); currentSession().getTransaction().commit(); currentSession().close(); } public Presentation_page read(int pageid) throws PresentationPageNotFoundException { currentSession().beginTransaction(); Criteria criteria=currentSession().createCriteria(Presentation_page.class); criteria.add(Restrictions.eq("page_id", pageid)); List<Presentation_page> list_of_pages=criteria.list(); currentSession().getTransaction().commit(); currentSession().close(); for(Presentation_page pp:list_of_pages) { if (pp.getPage_id()==pageid){ return pp; } } return null; } public void update(Presentation_page pp) throws PresentationPageNotFoundException { currentSession().beginTransaction(); currentSession().update(pp); currentSession().getTransaction().commit(); currentSession().close(); } @Override public void delete(Presentation_page pp) throws PresentationPageNotFoundException { currentSession().beginTransaction(); currentSession().delete(pp); currentSession().getTransaction().commit(); currentSession().close(); } }
This is my hibernate.xml: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:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- Root Context: defines shared resources visible to all other web components --> <!-- For annotations --> <context:component-scan base-package="my.topLevel.pack"> </context:component-scan> <import resource="hibernate.xml"/> </beans>
I have the following dependencies to the pom.xml: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:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- Datasources --> <bean id="dataSource_id" class="org.springframework.jdbc.datasource.DriverManagerDataSource" > <property name="url" value="jdbc:mysql://localhost:3306/spring_presentation"/> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="username" value="rotemya"/> <property name="password" value="*******"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource_id"/> <property name="packagesToScan" value="my.topLevel.pack.Domain"/> <property name="hibernateProperties"> <props> <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop> <!--JDBC connection pool (use the built-in)--> <prop key="connection.pool_size">1</prop> <!--Enable the second-level cache --> <prop key="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</prop> <!--Echo all executed SQL to stdout--> <prop key="show_sql">true</prop> <!--Drop and re-create the database schema on startup--> <prop key="hbm2ddl.auto">create</prop> </props> </property> </bean> </beans>
This are my hibernate jar files:Code:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my.topLevel</groupId> <artifactId>pack</artifactId> <name>SpringSTS_Sample_Project</name> <packaging>war</packaging> <version>1.0.0-BUILD-SNAPSHOT</version> <properties> <java-version>1.6</java-version> <org.springframework-version>3.1.1.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>3.0.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.0.3.RELEASE</version> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>javax.persistence</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.13</version> </dependency> </dependencies> </project>
mypath.PNG
I'm getting the following error:
java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
Any ideas?


Reply With Quote
