Java 支柱+;休眠:@SessionTarget不工作

Java 支柱+;休眠:@SessionTarget不工作,java,mysql,hibernate,struts2,dao,Java,Mysql,Hibernate,Struts2,Dao,我正在使用struts2-fullhibernatecore-plugin-2.2.2-GA.jar在我的DAO类中插入一个会话,如下所示: public class UserDAO { @SessionTarget Session session; @TransactionTarget Transaction transaction; public List<User> getUsers() { return sessio

我正在使用
struts2-fullhibernatecore-plugin-2.2.2-GA.jar
在我的DAO类中插入一个
会话
,如下所示:

public class UserDAO {
    @SessionTarget
    Session session;

    @TransactionTarget
    Transaction transaction;

    public List<User> getUsers() {
        return session.createQuery("from user").list();
    }
}
根据调试输出,
UserDAO
中的
session
transaction
null

一些文件供参考:

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


}
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>
UserListAction.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;
    }


}
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
的映射包。这有三个拦截器堆栈用于注入功能:

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

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

  • defaultStackHibernateStrutsValidation
    :Struts2
    defaultStack
    +插件的
    basicStackHibernate

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

hibernate默认值
包是抽象的,所以您可以用其他包扩展它。例如:

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