求大神解答!SSH框架如何在一张带有外键的表中插入数据。

来源:互联网 发布:达内unity3d视频下载 编辑:程序博客网 时间:2024/06/07 09:59
我现在有两张表商品类别表goods_cate和商品信息表goods_information,其中类别表中主键goods_num作为信息表里goods_category的外键。当在信息表中插入数据时报这样的错……严重: Exception occurred during processing request: null
java.lang.NullPointerException
at com.action.informng.GoodsInforAction.addGoodsInfor(GoodsInforAction.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)


以下是GoodsCate .java

package com.bean.informng;


import java.util.HashSet;
import java.util.Set;


public class GoodsCate {
private int goods_num;
private String goods_cateName;
private Set<GoodsInfor> goodsInfor = new HashSet<GoodsInfor>();

public int getGoods_num() {
return goods_num;
}
public void setGoods_num(int goods_num) {
this.goods_num = goods_num;
}


public String getGoods_cateName() {
return goods_cateName;
}
public void setGoods_cateName(String goods_cateName) {
this.goods_cateName = goods_cateName;
}
public Set<GoodsInfor> getGoodsInfor() {
return goodsInfor;
}
public void setGoodsInfor(Set<GoodsInfor> goodsInfor) {
this.goodsInfor = goodsInfor;
}



}

商品信息GoodsInfor.java

package com.bean.informng;

public class GoodsInfor {
private int goods_code;
private String goods_name;
private int goods_category;
private String goods_mnemonic;
private String goods_model;
private String goods_unit;
private String goods_address;
private int goods_price;
private int goods_presale;
private String goods_remark;
private GoodsCate goodsCate;


public int getGoods_code() {
return goods_code;
}
public void setGoods_code(int goods_code) {
this.goods_code = goods_code;
}


public String getGoods_name() {
return goods_name;
}
public void setGoods_name(String goods_name) {
this.goods_name = goods_name;
}


public int getGoods_category() {
return goods_category;
}
public void setGoods_category(int goods_category) {
this.goods_category = goods_category;
}
public String getGoods_mnemonic() {
return goods_mnemonic;
}
public void setGoods_mnemonic(String goods_mnemonic) {
this.goods_mnemonic = goods_mnemonic;
}
public String getGoods_model() {
return goods_model;
}
public void setGoods_model(String goods_model) {
this.goods_model = goods_model;
}
public String getGoods_unit() {
return goods_unit;
}
public void setGoods_unit(String goods_unit) {
this.goods_unit = goods_unit;
}
public String getGoods_address() {
return goods_address;
}
public void setGoods_address(String goods_address) {
this.goods_address = goods_address;
}
public int getGoods_price() {
return goods_price;
}
public void setGoods_price(int goods_price) {
this.goods_price = goods_price;
}
public int getGoods_presale() {
return goods_presale;
}
public void setGoods_presale(int goods_presale) {
this.goods_presale = goods_presale;
}
public String getGoods_remark() {
return goods_remark;
}
public void setGoods_remark(String goods_remark) {
this.goods_remark = goods_remark;
}
public GoodsCate getGoodsCate() {
return goodsCate;
}
public void setGoodsCate(GoodsCate goodsCate) {
this.goodsCate = goodsCate;
}

}
映像文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


<hibernate-mapping>  
    <class name="com.bean.informng.GoodsInfor" table="goods_information">  
        <id name="goods_code" type="java.lang.Integer">
    
            <column name="goods_code" />        
        </id>


       <many-to-one name="goodsCate" class="com.bean.informng.GoodsCate" lazy="false" fetch="join">
          <column name="goods_category" />
       </many-to-one> 
 
       <property name="goods_name" type="java.lang.String">
            <column name="goods_name" />
       </property>
       <property name="goods_mnemonic" type="java.lang.String">
            <column name="goods_mnemonic" />
       </property>  
       <property name="goods_model" type="java.lang.String">
            <column name="goods_model" />
       </property> 
       <property name="goods_unit" type="java.lang.String">
            <column name="goods_unit" />
       </property>
       <property name="goods_address" type="java.lang.String">
            <column name="goods_address" />
       </property> 
       <property name="goods_price" type="java.lang.Integer">
            <column name="goods_price" />
       </property> 
       <property name="goods_presale" type="java.lang.Integer">
            <column name="goods_presale" />
       </property>
       <property name="goods_remark" type="java.lang.String">
            <column name="goods_remark" />
       </property>              


    </class>  
</hibernate-mapping>  

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


<hibernate-mapping>  
    <class name="com.bean.informng.GoodsCate" table="goods_cate">  
        <id name="goods_num" type="java.lang.Integer">
            <column name="goods_num" />        
        </id>
       <property name="goods_cateName" type="java.lang.String">
            <column name="goods_cateName" />
       </property>
    <set name="goodsInfor" lazy="false" fetch="join">
            <key>
                <column name="goods_category" />
            </key>
            <one-to-many class="com.bean.informng.GoodsInfor" />
       </set>




    </class>  
</hibernate-mapping>  


Action:

package com.action.informng;


import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;


import javax.servlet.http.HttpServletResponse;


import org.apache.struts2.ServletActionContext;


import com.bean.informng.GoodsCate;
import com.bean.informng.GoodsInfor;
import com.opensymphony.xwork2.ActionSupport;
import com.service.informng.GoodsCateManageService;
import com.service.informng.GoodsInforManageService;


public class GoodsInforAction extends ActionSupport{
private int goods_code;
private int goods_category;
private String goods_name;
private String goods_mnemonic;
private String goods_model;
private String goods_unit;
private String goods_address;
private int goods_price;
private int goods_presale;
private String goods_remark;
private GoodsInfor goodsInfor;
private GoodsInforManageService goodsInforService;
private List<GoodsInfor> goodsInforList;
private String json;
private String delids;
private GoodsCate goodsCate;
private GoodsCateManageService cateService;
private int goods_num;

public String execute() throws Exception {
goodsInforList = goodsInforService.findAllGoodsInfor();
json="{Rows:[";
for (int i = 0; i < goodsInforList.size(); i++) {
GoodsInfor su = goodsInforList.get(i);
json+="{goods_code:\""+su.getGoods_code()+"\",goodsCate:\""+su.getGoodsCate().getGoods_cateName()+"\",goods_name:\""+su.getGoods_name()+"\"," +
"goods_mnemonic:\""+su.getGoods_mnemonic()+"\"," +
"goods_model:\""+su.getGoods_model()+"\"," +
"goods_unit:\""+su.getGoods_unit()+"\"," +
"goods_address:\""+su.getGoods_address()+"\"," +
"goods_price:\""+su.getGoods_price()+"\"," +
"goods_presale:\""+su.getGoods_presale()+"\"," +
"goods_remark:\""+su.getGoods_remark()+"\" },";
}
json+="]}";
System.out.println(json);
return SUCCESS;
}

public String addGoodsInfor() throws Exception {
GoodsInfor goodsInfor=new GoodsInfor();
goodsInfor.setGoods_code(goods_code);
GoodsCate cate=cateService.findoneGoodsCate(goods_num);
goodsInfor.setGoodsCate(cate);
goodsInfor.setGoods_name(goods_name);
goodsInfor.setGoods_mnemonic(goods_mnemonic);
goodsInfor.setGoods_model(goods_model);
goodsInfor.setGoods_unit(goods_unit);
goodsInfor.setGoods_address(goods_address);
goodsInfor.setGoods_price(goods_price);
goodsInfor.setGoods_presale(goods_presale);
goodsInfor.setGoods_remark(goods_remark);
goodsInforService.addGoodsInfor(goodsInfor);
return SUCCESS;
}


public void delGoodsInfor() throws Exception {


List<Integer> idlist=new ArrayList<Integer>();
String[] ids = delids.split(",");
for (int i = 0; i < ids.length; i++) {
idlist.add(Integer.parseInt(ids[i]));
}


goodsInforService.delGoodsInfor(idlist);
goodsInforList = goodsInforService.findAllGoodsInfor();
json="{Rows:[";
for (int i = 0; i < goodsInforList.size(); i++) {
GoodsInfor su = goodsInforList.get(i);
json+="{goods_code:\""+su.getGoods_code()+"\",goodsCate:\""+su.getGoodsCate().getGoods_cateName()+"\",goods_name:\""+su.getGoods_name()+"\"," +
"goods_mnemonic:\""+su.getGoods_mnemonic()+"\"," +
"goods_model:\""+su.getGoods_model()+"\"," +
"goods_unit:\""+su.getGoods_unit()+"\"," +
"goods_address:\""+su.getGoods_address()+"\"," +
"goods_price:\""+su.getGoods_price()+"\"," +
"goods_presale:\""+su.getGoods_presale()+"\"," +
"goods_remark:\""+su.getGoods_remark()+"\" },";
}
json+="]}";
System.out.println(json);
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println(json);
}


public String findOneGoodsInfor() throws Exception{
System.out.println(goods_code);
goodsInfor=goodsInforService.findoneGoodsInfor(goods_code);
return SUCCESS;
}

public String updateGoodsInfor() throws Exception{
goodsInforService.updateGoodsInfor(goodsInfor);
return SUCCESS;
}





public int getGoods_code() {
return goods_code;
}
public void setGoods_code(int goods_code) {
this.goods_code = goods_code;
}


public int getGoods_category() {
return goods_category;
}
public void setGoods_category(int goods_category) {
this.goods_category = goods_category;
}
public String getGoods_name() {
return goods_name;
}
public void setGoods_name(String goods_name) {
this.goods_name = goods_name;
}
public String getGoods_mnemonic() {
return goods_mnemonic;
}
public void setGoods_mnemonic(String goods_mnemonic) {
this.goods_mnemonic = goods_mnemonic;
}
public String getGoods_model() {
return goods_model;
}
public void setGoods_model(String goods_model) {
this.goods_model = goods_model;
}
public String getGoods_unit() {
return goods_unit;
}
public void setGoods_unit(String goods_unit) {
this.goods_unit = goods_unit;
}
public String getGoods_address() {
return goods_address;
}
public void setGoods_address(String goods_address) {
this.goods_address = goods_address;
}
public int getGoods_price() {
return goods_price;
}
public void setGoods_price(int goods_price) {
this.goods_price = goods_price;
}
public int getGoods_presale() {
return goods_presale;
}
public void setGoods_presale(int goods_presale) {
this.goods_presale = goods_presale;
}
public String getGoods_remark() {
return goods_remark;
}
public void setGoods_remark(String goods_remark) {
this.goods_remark = goods_remark;
}
public GoodsInfor getGoodsInfor() {
return goodsInfor;
}
public void setGoodsInfor(GoodsInfor goodsInfor) {
this.goodsInfor = goodsInfor;
}
public GoodsInforManageService getGoodsInforService() {
return goodsInforService;
}
public void setGoodsInforService(GoodsInforManageService goodsInforService) {
this.goodsInforService = goodsInforService;
}
public List<GoodsInfor> getGoodsInforList() {
return goodsInforList;
}
public void setGoodsInforList(List<GoodsInfor> goodsInforList) {
this.goodsInforList = goodsInforList;
}
public String getJson() {
return json;
}
public void setJson(String json) {
this.json = json;
}
public String getDelids() {
return delids;
}
public void setDelids(String delids) {
this.delids = delids;
}
public GoodsCate getGoodsCate() {
return goodsCate;
}
public void setGoodsCate(GoodsCate goodsCate) {
this.goodsCate = goodsCate;
}
public GoodsCateManageService getCateService() {
return cateService;
}
public void setCateService(GoodsCateManageService cateService) {
this.cateService = cateService;
}
public int getGoods_num() {
return goods_num;
}
public void setGoods_num(int goods_num) {
this.goods_num = goods_num;
}
}


JSP添加页:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();


String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath %>" />
<title>商品信息</title>
    <link href="ui/ligerUI/skins/Aqua/css/ligerui-form.css" rel="stylesheet"
        type="text/css" />
    <script src="ui/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/core/base.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerForm.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerDateEditor.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerComboBox.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerCheckBox.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerButton.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerDialog.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerRadio.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerSpinner.js" type="text/javascript"></script>
    <script src="ui/ligerUI/js/plugins/ligerTextBox.js" type="text/javascript"></script>


    <script type="text/javascript">
        $(function ()
        {
            $("form").ligerForm();
        }); 
    </script>
    <style type="text/css">
           body{ font-size:12px;}
        .l-table-edit {}
        .l-table-edit-td{ padding:4px;}
        .l-button-submit,.l-button-reset{width:80px; float:left; margin-left:10px; padding-bottom:2px;}
        .l-verify-tip{ left:230px; top:120px;}
    </style>


</head>


<body style="padding:10px">


    <form method="post" action="AddGoodsInforAction">
<div>
</div>
        <table cellpadding="0" cellspacing="0" class="l-table-edit" >          
            <tr>
                <td align="right" class="l-table-edit-td">商品代码:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_code"  type="text" /></td>
                <td align="left"></td>
                <td align="right" class="l-table-edit-td">商品类别:</td>
                <td align="left" class="l-table-edit-td">
                <select name="goodsInfor.goods_category">
                <s:iterator value="goodsCateList" id="good">
                <option value="<s:property value="#good.goods_num"/>"><s:property value="#good.goods_cateName"/></option>              
                </s:iterator>
                </select>   </td>        
            </tr>
            <tr>
                <td align="right" class="l-table-edit-td">商品名称:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_name" type="text" /></td>
                <td align="left"></td>
                <td align="right" class="l-table-edit-td">助记码:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_mnemonic" type="text" /></td>
            </tr>
            <tr>
                <td align="right" class="l-table-edit-td">商品型号:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_model" type="text" /></td>
                <td align="left"></td>
                <td align="right" class="l-table-edit-td">单位名称:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_unit"  type="text" /></td>
            </tr>
            <tr>
                <td align="right" class="l-table-edit-td">商品产地:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_address"  type="text" /></td>
                <td align="left"></td>
                <td align="right" class="l-table-edit-td">成本价:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_price"  type="text" /></td>
            </tr>
            <tr>
                <td align="right" class="l-table-edit-td">预售价:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_presale"  type="text" /></td>
                <td align="left"></td>
                <td align="right" class="l-table-edit-td">备注:</td>
                <td align="left" class="l-table-edit-td"><input name="goodsInfor.goods_remark"  type="text" /></td>                
            </tr>
        </table>
 <br />
<input type="submit" value="提交" id="Button1" class="l-button l-button-submit" /> 
<input type="reset" value="重置" class="l-button l-button-reset"/>
    </form>
    <div style="display:none">
    </div> 
</body>
</html>


如果外键删了,添加功能是能实现的,个人觉得问题出在Action方法里:

GoodsCate cate=cateService.findoneGoodsCate(goods_num);
goodsInfor.setGoodsCate(cate);

就是商品信息里的商品类别值没传进去,求大神帮忙,在此谢谢了

1 0
原创粉丝点击