Struts + Hibernate: @SessionTarget non funziona

Sto usando struts2-fullhibernatecore-plugin-2.2.2-GA.jar per iniettare una session nella mia class DAO come di seguito:

 public class UserDAO { @SessionTarget Session session; @TransactionTarget Transaction transaction; public List getUsers() { return session.createQuery("from user").list(); } } 

Ma ho capito

 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) ... 

In base all’output di debug, la session e la transaction in UserDAO sono null .

Alcuni file per riferimento:

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 users; private UserDAO userDAO = new UserDAO(); @Override public String execute() throws Exception { users = userDAO.getUsers(); return SUCCESS; } } 

hibernate.cfg.xml :

     org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/sample?zeroDateTimeBehavior=convertToNull root 10    

Se si desidera utilizzare la funzionalità di Inibizione sessione e Transazione di sospensione, il pacchetto di mapping delle azioni deve estendere il hibernate-default per l’ hibernate-default del pacchetto.

Maggiori dettagli sul pacchetto hibernate-default

Il plugin fornisce un pacchetto di mapping chiamato hibernate-default . E questo ha tre stack di intercettatori indicati per le capacità di iniezione:

  • basicStackHibernate : Like Struts2 basickStack (NO validations!), ma con funzionalità Hibernate session e transaction basickStack .

  • defaultStackHibernate : Like Struts2 defaultStack , ma senza metodi di validazione Struts2 (annotazione e XML). Utilizza invece il framework di convalida dell’ibernazione.

  • defaultStackHibernateStrutsValidation : Struts2 defaultStack + defaultStack plugin.

Questo pacchetto estende il pacchetto hibernate-default , quindi tutte le configurazioni di Struts2 predefinite possono essere utilizzate se necessario.

hibernate-default pacchetto hibernate-default è astratto, quindi puoi estenderlo con altri. Per esempio:

  

Per utilizzare l’ hibernate-default con un uso della configurazione di annotazione

 @ParentPackage("hibernate-default") @InterceptorRef("basicStackHibernate") public class YourAction extends ActionSupport {}