hibernate - JPA its not Autowiring -
hibernate - JPA its not Autowiring -
im getting null pointer exception when seek autowire dao object ... allow me show code! (im using maven + hibernate + spring + jpa)
@repository public class daofriendimp implements daofriend{ private entitymanagerfactory emf = persistence.createentitymanagerfactory("persistence"); private entitymanager entitymanager = emf.createentitymanager(); @persistencecontext(unitname = "persistence") public void setentitymanager(entitymanager entitymanager) { this.entitymanager = entitymanager; } @override public boolean save(person person, person friend) { throw new unsupportedoperationexception("not supported yet."); } @override public list<person> getallfriendofpersonwithid(int id) { person person = entitymanager.find(person.class, id); homecoming person.getfriends(); } @override public boolean delete(person person, person friend) { throw new unsupportedoperationexception("not supported yet."); }
}
note: u can see im initializing entitymanager manually ... thats because if utilize persistencecontext null pointer exception ... perhaps because daofriendimp not gettint autowires propertly ? dont know...
now allow me show null pointer:
public class friendlistlogic { @autowired daofriendimp dao; public list<person> getentrys(int userid) { list<person> result = dao.getallfriendofpersonwithid(userid); //here homecoming result; } }
i dont know why not getting inyected! seems allright in configuration xml. add together rest of files (pom, persistence, applicationcontext , servlet.xml)
persistence.xml:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="persistence" transaction-type="resource_local"> <provider>org.hibernate.ejb.hibernatepersistence</provider> <class>com.divux.onex.model.person</class> <class>com.divux.onex.model.circleofconnection</class> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.mysqldialect" /> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.driver" /> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/onex" /> <property name="javax.persistence.jdbc.user" value="root" /> <property name="javax.persistence.jdbc.password" value="bterra" /> </properties> </persistence-unit> </persistence>
note: have jdbc user password driver , url here because had problems in datasource bean in applicationcontext ... didnt work if had info there (and yep ... dont know why!)
applicationcontext.xml
<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:tx="http://www.springframework.org/schema/tx" xsi:schemalocation="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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <bean class="org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor" /> <context:annotation-config /> <bean class="org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor"/> <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> </bean> <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="datasource" ref="datasource" /> <property name="persistenceunitname" value="persistence" /> <property name="jpavendoradapter"> <bean class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter"> <property name="database" value="mysql" /> <property name="showsql" value="false" /> <property name="generateddl" value="false" /> <property name="databaseplatform" value="org.hibernate.dialect.mysqldialect" /> </bean> </property> <property name="loadtimeweaver"> <bean class="org.springframework.instrument.classloading.instrumentationloadtimeweaver"></bean> </property> </bean> <bean id="transactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager"> <property name="entitymanagerfactory" ref="entitymanagerfactory" /> </bean> <bean class="org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor"></bean> <tx:annotation-driven transaction-manager="transactionmanager" /> </beans>
servlet.xml
<?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" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:component-scan base-package="com.divux.onex.controller"></context:component-scan> <context:component-scan base-package="com.divux.onex.daoimp"></context:component-scan> <context:property-placeholder location="classpath*:resources/properties/*.properties"/> <bean class="org.springframework.web.servlet.view.internalresourceviewresolver"> <property name="prefix" value="/web-inf/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <mvc:annotation-driven/> <mvc:view-controller path="/" view-name="index"/> <mvc:resources mapping="/resources/**" location="/resources/"/> <import resource="applicationcontext.xml" /> </beans>
and pom.xml (just part of it)
<properties> <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <org.springframework.version>3.0.5.release</org.springframework.version> <aspectj.version>1.6.11</aspectj.version> <org.slf4j-version>1.5.8</org.slf4j-version> <hibernate.version>3.6.7.final</hibernate.version> <hibernate-search.version>4.0.0.final</hibernate-search.version> </properties> <!-- jpa hibernate persistence --> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.16</version> </dependency> <!-- persistance --> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-core</artifactid> <version>${hibernate.version}</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-entitymanager</artifactid> <version>${hibernate.version}</version> <exclusions> <exclusion> <groupid>cglib</groupid> <artifactid>cglib</artifactid> </exclusion> <exclusion> <groupid>dom4j</groupid> <artifactid>dom4j</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-ehcache</artifactid> <version>${hibernate.version}</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-search</artifactid> <version>${hibernate-search.version}</version> </dependency> <!-- <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-jmx</artifactid> <version>${hibernate-jmx.version}</version> </dependency> --> <dependency> <groupid>org.hibernate.javax.persistence</groupid> <artifactid>hibernate-jpa-2.0-api</artifactid> <version>1.0.0.final</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-jpamodelgen</artifactid> <version>1.1.1.final</version> <scope>provided</scope> <!-- need @ compile time --> </dependency> <dependency> <groupid>cglib</groupid> <artifactid>cglib-nodep</artifactid> <version>2.2</version> </dependency> <dependency> <groupid>javax.transaction</groupid> <artifactid>jta</artifactid> <version>1.1</version> </dependency> <!-- validation --> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-validator</artifactid> <version>4.1.0.final</version> <exclusions> <exclusion> <groupid>javax.xml.bind</groupid> <artifactid>jaxb-api</artifactid> </exclusion> <exclusion> <groupid>com.sun.xml.bind</groupid> <artifactid>jaxb-impl</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>javax.validation</groupid> <artifactid>validation-api</artifactid> <version>1.0.0.ga</version> </dependency> <!-- aspectj --> <dependency> <groupid>org.aspectj</groupid> <artifactid>aspectjrt</artifactid> <version>${aspectj.version}</version> </dependency> <dependency> <groupid>org.aspectj</groupid> <artifactid>aspectjweaver</artifactid> <version>${aspectj.version}</version> </dependency> </dependencies>
let me know if need more information! not add together error output cuz think unecessary ... if u needit allow me know!
thx all!
ah, need autowire using interface daofriend
:
@autowired daofriend dao;
this because spring uses java proxy mechanizm wrap repository bean transaction-aware layer. approach interfaces can visible other beans.
also @autowired
has "required" default behaviour. means friendlistlogic
instances not managed spring: need annotate class @component
(and create sure in component scan path) or create explicitly via string context.
hibernate spring jpa maven
Comments
Post a Comment