Java 使用Struts 2和Hibernate在数据库中插入空值
我正在使用Struts 2和Hibernate集成应用程序在数据库中插入值。但在从表单字段插入值之后,只有Java 使用Struts 2和Hibernate在数据库中插入空值,java,mysql,struts2,dao,hibernate-4.x,Java,Mysql,Struts2,Dao,Hibernate 4.x,我正在使用Struts 2和Hibernate集成应用程序在数据库中插入值。但在从表单字段插入值之后,只有null值保存在数据库中 这是我的表单JSP文件: employee.jsp: <%@ taglib uri ="/struts-tags" prefix="s"%> <html> <head> <meta http-equiv="Content-Type" content="t
null
值保存在数据库中
这是我的表单JSP文件:
employee.jsp
:
<%@ taglib uri ="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="employee" method="post">
<s:textfield name ="name" label="ENTER your name"/>
<s:textfield name="address" label="Enter Address"/>
<s:submit label="submit">submit</s:submit>
</s:form>
</body>
</html>
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Empmodel {
@Id @GeneratedValue
private int serialno;
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class ConnectionFactory {
private static SessionFactory sessionfactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
Configuration config =null;
SessionFactory sf =null;
try{
config= new Configuration().configure();
ServiceRegistry servicereg = (ServiceRegistry) new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
sf= config.buildSessionFactory(servicereg);
}
catch(Throwable e){
System.out.println("Initial session factory creation failed"+ e);
throw new ExceptionInInitializerError(e);
}
return sf;
}
public static SessionFactory getSessionFactory(){
return sessionfactory;
}}
import model.Empmodel;
import org.hibernate.Session;
public class Empdao {
public Empmodel add(){
Empmodel model = new Empmodel();
Session session=ConnectionFactory.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(model);
session.getTransaction().commit();
return model;
}
}
import model.Empmodel;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import dao.Empdao;
public class Empaction extends ActionSupport implements ModelDriven<Empmodel> {
private static final long serialVersionUID = 1L;
private Empmodel model;
public String execute() throws Exception{
Empdao empdao = new Empdao();
Empmodel queryresult = empdao.add();
if(queryresult != null) {
return SUCCESS;
}
else
return ERROR;
}
@Override
public Empmodel getModel() {
// TODO Auto-generated method stub
return model;
}
}
Connectionfactory.java
:
<%@ taglib uri ="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="employee" method="post">
<s:textfield name ="name" label="ENTER your name"/>
<s:textfield name="address" label="Enter Address"/>
<s:submit label="submit">submit</s:submit>
</s:form>
</body>
</html>
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Empmodel {
@Id @GeneratedValue
private int serialno;
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class ConnectionFactory {
private static SessionFactory sessionfactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
Configuration config =null;
SessionFactory sf =null;
try{
config= new Configuration().configure();
ServiceRegistry servicereg = (ServiceRegistry) new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
sf= config.buildSessionFactory(servicereg);
}
catch(Throwable e){
System.out.println("Initial session factory creation failed"+ e);
throw new ExceptionInInitializerError(e);
}
return sf;
}
public static SessionFactory getSessionFactory(){
return sessionfactory;
}}
import model.Empmodel;
import org.hibernate.Session;
public class Empdao {
public Empmodel add(){
Empmodel model = new Empmodel();
Session session=ConnectionFactory.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(model);
session.getTransaction().commit();
return model;
}
}
import model.Empmodel;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import dao.Empdao;
public class Empaction extends ActionSupport implements ModelDriven<Empmodel> {
private static final long serialVersionUID = 1L;
private Empmodel model;
public String execute() throws Exception{
Empdao empdao = new Empdao();
Empmodel queryresult = empdao.add();
if(queryresult != null) {
return SUCCESS;
}
else
return ERROR;
}
@Override
public Empmodel getModel() {
// TODO Auto-generated method stub
return model;
}
}
Empdao
是:
<%@ taglib uri ="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="employee" method="post">
<s:textfield name ="name" label="ENTER your name"/>
<s:textfield name="address" label="Enter Address"/>
<s:submit label="submit">submit</s:submit>
</s:form>
</body>
</html>
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Empmodel {
@Id @GeneratedValue
private int serialno;
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class ConnectionFactory {
private static SessionFactory sessionfactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
Configuration config =null;
SessionFactory sf =null;
try{
config= new Configuration().configure();
ServiceRegistry servicereg = (ServiceRegistry) new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
sf= config.buildSessionFactory(servicereg);
}
catch(Throwable e){
System.out.println("Initial session factory creation failed"+ e);
throw new ExceptionInInitializerError(e);
}
return sf;
}
public static SessionFactory getSessionFactory(){
return sessionfactory;
}}
import model.Empmodel;
import org.hibernate.Session;
public class Empdao {
public Empmodel add(){
Empmodel model = new Empmodel();
Session session=ConnectionFactory.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(model);
session.getTransaction().commit();
return model;
}
}
import model.Empmodel;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import dao.Empdao;
public class Empaction extends ActionSupport implements ModelDriven<Empmodel> {
private static final long serialVersionUID = 1L;
private Empmodel model;
public String execute() throws Exception{
Empdao empdao = new Empdao();
Empmodel queryresult = empdao.add();
if(queryresult != null) {
return SUCCESS;
}
else
return ERROR;
}
@Override
public Empmodel getModel() {
// TODO Auto-generated method stub
return model;
}
}
动作
类为:
<%@ taglib uri ="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="employee" method="post">
<s:textfield name ="name" label="ENTER your name"/>
<s:textfield name="address" label="Enter Address"/>
<s:submit label="submit">submit</s:submit>
</s:form>
</body>
</html>
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Empmodel {
@Id @GeneratedValue
private int serialno;
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class ConnectionFactory {
private static SessionFactory sessionfactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
Configuration config =null;
SessionFactory sf =null;
try{
config= new Configuration().configure();
ServiceRegistry servicereg = (ServiceRegistry) new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
sf= config.buildSessionFactory(servicereg);
}
catch(Throwable e){
System.out.println("Initial session factory creation failed"+ e);
throw new ExceptionInInitializerError(e);
}
return sf;
}
public static SessionFactory getSessionFactory(){
return sessionfactory;
}}
import model.Empmodel;
import org.hibernate.Session;
public class Empdao {
public Empmodel add(){
Empmodel model = new Empmodel();
Session session=ConnectionFactory.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(model);
session.getTransaction().commit();
return model;
}
}
import model.Empmodel;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import dao.Empdao;
public class Empaction extends ActionSupport implements ModelDriven<Empmodel> {
private static final long serialVersionUID = 1L;
private Empmodel model;
public String execute() throws Exception{
Empdao empdao = new Empdao();
Empmodel queryresult = empdao.add();
if(queryresult != null) {
return SUCCESS;
}
else
return ERROR;
}
@Override
public Empmodel getModel() {
// TODO Auto-generated method stub
return model;
}
}
导入模型.Empmodel;
导入com.opensymphony.xwork2.ActionSupport;
导入com.opensymphony.xwork2.ModelDriven;
导入dao.Empdao;
公共类Empaction扩展ActionSupport实现模型驱动{
私有静态最终长serialVersionUID=1L;
私有模式;
公共字符串execute()引发异常{
Empdao Empdao=新的Empdao();
Empmodel queryresult=empdao.add();
if(queryresult!=null){
回归成功;
}
其他的
返回误差;
}
@凌驾
公共模型getModel(){
//TODO自动生成的方法存根
收益模型;
}
}
如果你想先得到一些东西,你需要先放一些东西。这条规则在任何地方都适用。在代码中,需要将模型对象放在DAO中。然后DAO将使用通过拦截器在模型中填充的值将其保存到db。比如说
Empmodel queryresult = empdao.add(model);
为此,您需要更改方法签名以添加model
的参数
这件事看起来很琐碎,但是您需要删除在方法实现中重新创建模型的语句,因为它不能正常工作。在开始事务之前,还要确保模型不是空的
DAO中的save
方法应该检查是否创建了具有id
值的null
新对象
if (model.getId() == null)
session.save(model);
else
session.update(model);
}
进行这些更改后,应用程序将直接进入成功页面,而不进行任何数据库活动。您能为我的Empaction.java类和Empdao.java类编写代码吗?这样会更有帮助。日志中有哪些错误?什么是hiberate.cfg.xml
?您是否测试了数据库连接、架构创建、用户创建和访问权限?无论如何,如果保存新模型或空模型,这些更改将毫无价值。规则是相反的,如果你什么都不放,那么你什么都得不到。那么如何把一些东西放在模型上你能给我一些规则吗likns@tom添加了一些链接,如果要使用hibernate4,则需要对配置进行一些更改。