为什么我的getHibernateTemplate()saveOrUpdate只能更新不能插入

时间:2008-09-28 11:15:19   来源:论坛整理  作者:  编辑:chinaitzhe
我的getHibernateTemplate().saveOrUpdate现在只能update不能,不能插入,在执行插入的时候也不报任何错误,是什么原因啊?

public ActionForward onAdd(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
TUser user = new TUser();
user.setId(request.getParameter("userid"));
user.setUsername(request.getParameter("username"));
user.setPassword(request.getParameter("password"));
user.setEmail(request.getParameter("email"));
userService.regist(user);
return mapping.findForward("edit");
}


public TUser regist(TUser user)
{
userDAO.save(user);
return user;
}

public void save(TUser transientInstance) {
log.debug("saving TUser instance");
try {
Session session = this.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
getHibernateTemplate().saveOrUpdate(transientInstance);
tx.commit();
session.close();
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}

我用的是struts1.1 spring1.2 hibernate3
网友回复:帮忙顶一下,让了解的人来解答.
网友回复:你的id生成方式是什么样的?
网友回复:估计是你的id是generator生成的,你又指定了id,这种情况下,hibernate默认根据id是否为null来判断你的这个对象是瞬时态或者是持久态

网友回复:-- Create table
create table T_USER
(
ID VARCHAR2(31) not null,
USERNAME VARCHAR2(10) not null,
PASSWORD VARCHAR2(10) not null,
EMAIL VARCHAR2(50) not null
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table T_USER
add constraint T_USERID primary key (ID)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
网友回复:我是我表的sql语句
网友回复:TUser.hbm.xml贴上来
网友回复: <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="net.hlj.domain.TUser" table="T_USER" schema="TEST">
<id name="id" type="java.lang.String">
<column name="ID" length="31" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="USERNAME" length="10" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="10" not-null="true" />
</property>
<property name="email" type="java.lang.String">
<column name="EMAIL" length="50" not-null="true" />
</property>
</class>
</hibernate-mapping>
网友回复:对的,只有把问题说明清楚,大家才能分析出具体是什么原因。
网友回复:不好意思,我现在是刚刚学习hibernate和spring ,对于哪些文件是需要拿出来看的不太了解,谢谢了
网友回复:你的id是native生成方式,不需要手工指定,
去掉user.setId(request.getParameter("userid"));
网友回复:如果你需要手工指定可以改为
<generator class="assigned" />
网友回复:非常感谢Johnson_Hong
现在代码已经好使了
关键字:
上一篇:Tomcat做集群

相关文章

    无相关信息

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面