Struts +休眠:@SessionTarget不起作用

我正在像下面这样在我的DAO类中struts2-fullhibernatecore-plugin-2.2.2-GA.jar注入一个session

public class UserDAO {

@SessionTarget

Session session;

@TransactionTarget

Transaction transaction;

public List<User> getUsers() {

return session.createQuery("from user").list();

}

}

但是我得到了

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)

...

根据调试输出,session并且transactionUserDAOnull

一些文件供参考:

@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;

}

}

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;

}

}

<?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>

回答:

如果要使用Hibernate会话和事务注入功能,则操作映射包需要扩展该包hibernate-default

有关hibernate-default包装的更多详细信息

该插件提供了一个名为的映射包hibernate-default。它具有三个指示注入功能的拦截器堆栈:

  • basicStackHibernate:类似于Struts2 basickStack(无需验证!),但具有Hibernate会话和事务注入功能。

  • defaultStackHibernate:类似于Struts2 defaultStack,但没有Struts2验证方法(注释和XML)。改用Hibernate Validation框架。

  • defaultStackHibernateStrutsValidation:Struts2 defaultStack+插件的basicStackHibernate

该软件包扩展了该hibernate-default软件包,因此如果需要,可以使用所有默认的Struts2配置。

hibernate-default包是抽象的,因此您可以将其与其他扩展。例如:

<package name="default" extends="hibernate-default,json-default" >

hibernate-default与注释配置一起使用,请使用

@ParentPackage("hibernate-default")

@InterceptorRef("basicStackHibernate")

public class YourAction extends ActionSupport {}

以上是 Struts +休眠:@SessionTarget不起作用 的全部内容, 来源链接: utcz.com/qa/402402.html

回到顶部