Friday, 15 February 2013

java - Spring: Missing JPA Metamodel -



java - Spring: Missing JPA Metamodel -

i cannot understand going wrong simple spring mvc project jpa repositories. please give hint.

domain:

package com.test.app; @entity @table(name = "foo_table") public class foodomain { @id @column(name = "id", unique = true, nullable = false) private integer id; @column(name = "text", nullable = false) private string text; // getters & setters here...

}

repository

package com.test.app; @repositorydefinition(domainclass=foodomain.class, idclass=long.class) public interface foorepository extends crudrepository<foodomain, long> {}

controller

@controller public class homecontroller { @autowired private foorepository foorepository; @requestmapping(value = "/", method = requestmethod.get) public string home(locale locale, model model) { model.addattribute("rowsnumber", foorepository.count()); homecoming "home"; }

}

root-context.xml

<?xml version="1.0" encoding="utf-8"?> <beans xmlns & xsi here...> <context:annotation-config /> <!-- defining folders containing bean components (@component, @service) --> <context:component-scan base-package="ru.lexikos.app" /> <import resource="hibernate.xml" /> <import resource="repositories.xml" /> <context:component-scan base-package="com.test.app" /> </beans>

hibernate.xml

<?xml xmlns & xsi here...> <context:property-placeholder location="classpath:db-connection.properties" /> <bean id="datasource" class="org.apache.tomcat.dbcp.dbcp.basicdatasource"> <property name="driverclassname" value="${jdbc.driverclassname}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.pass}" /> </bean> <bean id="sessionfactory" class="org.springframework.orm.hibernate4.localsessionfactorybean"> <property name="datasource" ref="datasource" /> <property name="hibernateproperties"> <props> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.dialect">${hibernate.dialect}</prop> </props> </property> </bean> </beans>

repositories.xml

<?xml version="1.0" encoding="utf-8"?> <beans xmlns & xsi here...> <jpa:repositories base-package="com.test.app"/> </beans>

exception

error: org.springframework.web.context.contextloader - context initialization failed org.springframework.beans.factory.beancreationexception: error creating bean name 'jpamapppingcontext': invocation of init method failed; nested exception ja va.lang.illegalargumentexception: @ to the lowest degree 1 jpa metamodel must present! caused by: java.lang.illegalargumentexception: @ to the lowest degree 1 jpa metamodel must present!

xstian right. i've lost entitymanagerfactory declaration. here sample working me now:

hibernate.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <context:property-placeholder location="classpath:db-connection.properties" /> <bean id="datasource" class="org.apache.tomcat.dbcp.dbcp.basicdatasource"> <property name="driverclassname" value="${jdbc.driverclassname}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.pass}" /> </bean> <bean id="sessionfactory" class="org.springframework.orm.hibernate4.localsessionfactorybean"> <property name="datasource" ref="datasource" /> <property name="hibernateproperties"> <props> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.dialect">${hibernate.dialect}</prop> </props> </property> </bean> <bean id="jpavendoradapter" class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter"> <property name="showsql" value="true"/> <property name="generateddl" value="true"/> <property name="database" value="mysql"/> </bean> <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="datasource" ref="datasource"/> <property name="jpavendoradapter" ref="jpavendoradapter"/> <!-- spring based scanning entity classes>--> <property name="packagestoscan" value="com.test.app"/> </bean> <!-- enables hibernate @transactional programming model --> <tx:annotation-driven transaction-manager="transactionmanager" /> <bean id="transactionmanager" class="org.springframework.orm.hibernate4.hibernatetransactionmanager"> <property name="sessionfactory" ref="sessionfactory" /> </bean> <jpa:repositories base-package="com.test.app"/> </beans>

java spring hibernate

No comments:

Post a Comment