Hibernate
[size=12px]请各位大虾指点一下hibernate的主外键关系添加的问题,一点提交就报错[/size]
public class TUser implements java.io.Serializable {
private Long userId;
private String userName;
private String userPassword;
private String userIdCode;
private String userTel;
private String userAddr;
private String userZip;
private Integer userStatus;
private Set goodses = new HashSet(0);
// Constructors
/** default constructor */
getter和setter
}
public class Goods implements java.io.Serializable {
// Fields
private Long goodsId;
private TUser TUser;
private String goodsName;
private Double goodsPrice;
private String goodsPic;
private String goodsDesc;
private Date beginTime;
private Date endTime;
/** default constructor */
getter和setter
}
TUser.hbm.xml:
<hibernate-mapping>
<class name="com.accp.hibernate.po.TUser" table="t_user" schema="dbo" catalog="epai">
<id name="userId" type="java.lang.Long">
<column name="user_id" />
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="user_name" length="50" not-null="true" />
</property>
<property name="userPassword" type="java.lang.String">
<column name="user_password" length="50" not-null="true" />
</property>
<property name="userIdCode" type="java.lang.String">
<column name="user_id_code" length="20" not-null="true" />
</property>
<property name="userTel" type="java.lang.String">
<column name="user_tel" length="50" not-null="true" />
</property>
<property name="userAddr" type="java.lang.String">
<column name="user_addr" length="300" not-null="true" />
</property>
<property name="userZip" type="java.lang.String">
<column name="user_zip" length="20" not-null="true" />
</property>
<property name="userStatus" type="java.lang.Integer">
<column name="user_status" not-null="true" />
</property>
<set name="goodses" inverse="true" cascade="all">
<key>
<column name="saler_id" not-null="true" />
</key>
<one-to-many class="com.accp.hibernate.po.Goods" />
</set>
</class>
</hibernate-mapping>
Goods.hbm.xml
<hibernate-mapping>
<class name="com.accp.hibernate.po.Goods" table="goods" schema="dbo" catalog="epai">
<id name="goodsId" type="java.lang.Long">
<column name="goods_id" />
<generator class="native" />
</id>
<many-to-one name="TUser" class="com.accp.hibernate.po.TUser" fetch="select">
<column name="saler_id" not-null="true" />
</many-to-one>
<property name="goodsName" type="java.lang.String">
<column name="goods_name" length="50" not-null="true" />
</property>
<property name="goodsPrice" type="java.lang.Double">
<column name="goods_price" scale="4" not-null="true" />
</property>
<property name="goodsPic" type="java.lang.String">
<column name="goods_pic" length="500" />
</property>
<property name="goodsDesc" type="java.lang.String">
<column name="goods_desc" length="3000" />
</property>
<property name="beginTime" type="java.util.Date">
<column name="begin_time" length="23" />
</property>
<property name="endTime" type="java.util.Date">
<column name="end_time" length="23" />
</property>
</class>
</hibernate-mapping>
public class GoodsAction extends DispatchAction {
public ActionForward Add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
addShopForm shop=(addShopForm)form;
LoginForm loginForm = (LoginForm) form;
TUser user=new TUser();
Goods good=new Goods();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
good.setGoodsName(shop.getShopName());
good.setGoodsPrice(Double.valueOf(shop.getPrice()));
good.setGoodsPic(shop.getPhoto());
good.setGoodsDesc(shop.getDepict());
try {
good.setBeginTime(formater.parse(shop.getBegin()));
good.setEndTime(formater.parse(shop.getEnd()));
} catch (ParseException e) {
e.printStackTrace();
}
good.setTUser(user);
user.getGoodses().add(good);
Ilogin login=new login();
login.Add(user);//这个方法就是连接数据库的,是对的
return mapping.findForward("succeed");
}
}
show.jsp
<html>
<head>
<script type="text/javascript">
function Submit(sb){
document.forms[0].action=sb;
document.forms[0].submit();
}
</script>
</head>
<body>
<form action="goods" method="post">
<table align="center" width="350">
<tr>
<td width="30%">商品名称:</td>
<td width="50%"><input name="shopName" /></td>
</tr>
<tr>
<td>起怕价:</td>
<td><input name="price" /></td>
</tr>
<tr>
<td>图片:</td>
<td><input name="photo" /></td>
</tr>
<tr>
<td>描述:</td>
<td><textarea cols="15" rows="5" style="overflow:scroll" name="depict"></textarea></td>
</tr>
<tr>
<td>开始拍卖时间:</td>
<td><input name="begin" /></td>
</tr>
<tr>
<td>截至时间:</td>
<td><input name="end" /></td>
</tr>
<tr>
<td></td>
<td>
<input type="button" value="提交" onclick="Submit('goods.do?operate=Add')"/>
</td>
</tr>
</table>
</form>
</body>
</html>