i using struts2-fullhibernatecore-plugin-2.2.2-ga.jar inject session in dao class below:
public class userdao { @sessiontarget session session; @transactiontarget transaction transaction; public list<user> getusers() { return session.createquery("from user").list(); } } but got
java.lang.nullpointerexception com.wudi.dao.userdao.getusers(userdao.java:28) com.wudi.action.userlistaction.execute(userlistaction.java:24) sun.reflect.nativemethodaccessorimpl.invoke0(native method) sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) java.lang.reflect.method.invoke(method.java:606) ... according debugging output, session , transaction in userdao null.
some files reference:
user.java:
@entity @table(name = "user") public class user implements serializable { @id @generatedvalue private int id; @column private string name; public int getid() { return id; } public void setid(int id) { this.id = id; } public string getname() { return name; } public void setname(string name) { this.name = name; } } userlistaction.java:
public class userlistaction extends actionsupport { private list<user> users; private userdao userdao = new userdao(); @override public string execute() throws exception { users = userdao.getusers(); return success; } } hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8"?> <!doctype hibernate-configuration public "-//hibernate/hibernate configuration dtd 3.0//en" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.mysqldialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sample?zerodatetimebehavior=converttonull</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.pool_size">10</property> <mapping class="com.wudi.model.user" /> </session-factory> </hibernate-configuration>
if want use hibernate session , transaction injection capability, action mapping package need extend package hibernate-default.
more details hibernate-default package
the plugin provides mapping package called hibernate-default. , has 3 interceptor stacks indicated injection capabilities:
basicstackhibernate: struts2basickstack(no validations!), hibernate session , transaction injections capability.defaultstackhibernate: struts2defaultstack, without struts2 validation methods (annotation , xml). uses hibernate validation framework instead.defaultstackhibernatestrutsvalidation: struts2defaultstack+ plugin'sbasicstackhibernate.
this package extends hibernate-default package, default struts2 configurations can used if need.
hibernate-default package abstract, can extends other. example:
<package name="default" extends="hibernate-default,json-default" > to use hibernate-default annotation configuration use
@parentpackage("hibernate-default") @interceptorref("basicstackhibernate") public class youraction extends actionsupport {}
Comments
Post a Comment