【问题标题】:Null values are insering in database using Struts 2 and Hibernate使用 Struts 2 和 Hibernate 在数据库中插入空值
【发布时间】:2013-05-28 01:15:23
【问题描述】:

我正在使用 Struts 2 和 Hibernate 集成应用程序在数据库中插入值。但在从表单中插入值后,只有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>

实体类Empmodel.java:

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

Connectionfactory.java:

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

Empdao 是:

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

Action 类是:

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

【问题讨论】:

    标签: java mysql struts2 dao hibernate-4.x


    【解决方案1】:

    如果你想先得到一些东西,你需要放一些东西。这条规则在任何地方都适用。在您的代码中,您需要将模型对象放入 DAO。然后 DAO 将通过拦截器使用模型中填充的值将其保存到数据库中。例如

    Empmodel queryresult = empdao.add(model); 
    

    为此,您需要更改方法签名以添加model 的参数。

    这件事似乎微不足道,但您需要删除在方法实现中重新创建model 的语句,它无法正常工作。在开始事务之前还要确保模型不为空。

    DAO 中的save 方法应检查是否创建了具有null 值为id 的新对象。

    if (model.getId() == null)
      session.save(model);
    else
      session.update(model);
    }
    

    How to implement a ModelDriven with integration hibernate example

    Struts2 hibernate integration via s2hibernate plugin

    【讨论】:

    • 在进行这些更改后,应用程序将直接进入成功页面,而无需进行任何数据库活动。你能把我的 Empaction.java 类和 Empdao.java 类的代码放在上面吗?它会更有帮助。
    • 日志中有哪些错误? hiberate.cfg.xml 是什么?是否测试了数据库连接、架构创建、用户创建、访问权限?
    • 无论如何,如果您保存新模型或空模型,这些更改将毫无价值。规则是相反的,如果你什么都不放,那么你什么也得不到。
    • 那么如何在模型上放置一些东西有什么规则可以告诉我一些链接
    • @tom 添加了一些链接,如果您将使用 hibernate4,则需要对配置进行一些更改。
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2015-10-11
    • 1970-01-01
    • 2013-09-28
    • 2013-04-17
    • 2013-09-30
    • 2013-04-17
    相关资源
    最近更新 更多