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
的映射包。这有三个拦截器堆栈用于注入功能:
:类似于Struts2basicStackHibernate
(无验证!),但具有Hibernate会话和事务注入功能basickStack
:类似于Struts2defaultStackHibernate
,但没有Struts2验证方法(注释和XML)。而是使用Hibernate验证框架defaultStack
:Struts2defaultStackHibernateStrutsValidation
+插件的defaultStack
basicStackHibernate
hibernate default
软件包,因此,如果需要,可以使用所有默认的Struts2配置
hibernate默认值
包是抽象的,所以您可以用其他包扩展它。例如:
<package name="default" extends="hibernate-default,json-default" >