请高手给我指点Action中插入数据代码
tblsb.setSalesbusinessid(saleDetailsForm.getSalesbusinessid());
tblsb.setTitle(saleDetailsForm.getTitle());
tblsb.setBegindate(getdate.getFormatOracleDate(saleDetailsForm.getBegindate()));
tblsb.setEnddate(getdate.getFormatOracleDate(saleDetailsForm.getEnddate()));
tblsb.setContent(saleDetailsForm.getContent());
tblsb.setSalespeopleid(saleDetailsForm.getSalespeopleid());
tblsb.setCustomerid(saleDetailsForm.getCustomerid());
tblsb.setCreateuserid(saleDetailsForm.getCreateuserid());
tblsb.setCreatedate(getdate.getFormatOracleDate(saleDetailsForm.getCreatedate()));
//tblsb.setTblsalepeople(salepeople);
spioperate.update(salebusiness);
package com.nicebridge.hcss.crm.hibernate.pojo;import java.io.Serializable;
import java.util.Date;public class TblSalesbusiness implements Serializable{
private String salesbusinessid;
private String title;
private Date begindate;
private Date enddate;
private String content;
private String salespeopleid;
private String customerid;
private String createuserid;
private Date createdate;
private TblSalepeople tblsalepeople;
public String getSalesbusinessid() {
return salesbusinessid;
}
public void setSalesbusinessid(String salesbusinessid) {
this.salesbusinessid = salesbusinessid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getBegindate() {
return begindate;
}
public void setBegindate(Date begindate) {
this.begindate = begindate;
}
public Date getEnddate() {
return enddate;
}
public void setEnddate(Date enddate) {
this.enddate = enddate;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getSalespeopleid() {
return salespeopleid;
}
public void setSalespeopleid(String salespeopleid) {
this.salespeopleid = salespeopleid;
}
public String getCustomerid() {
return customerid;
}
public void setCustomerid(String customerid) {
this.customerid = customerid;
}
public String getCreateuserid() {
return createuserid;
}
public void setCreateuserid(String createuserid) {
this.createuserid = createuserid;
}
public Date getCreatedate() {
return createdate;
}
public void setCreatedate(Date createdate) {
this.createdate = createdate;
}
public TblSalepeople getTblsalepeople() {
return tblsalepeople;
}
public void setTblsalepeople(TblSalepeople tblsalepeople) {
this.tblsalepeople = tblsalepeople;
}}
插入数据库方法 public void update(Object object){
Session session = sessionFactory.openSession();
Transaction tran = session.beginTransaction();
session.update(object);
tran.commit();
}
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.nicebridge.hcss.crm.hibernate.pojo.TblSalesbusiness" table="TBL_SALESBUSINESS" schema="SCOTT">
<id name="salesbusinessid" type="java.lang.String">
<column name="SALESBUSINESSID" length="50" />
<generator class="assigned" />
</id>
<property name="title" type="java.lang.String">
<column name="TITLE" length="100" not-null="true" />
</property>
<property name="begindate" type="java.util.Date">
<column name="BEGINDATE" length="7" />
</property>
<property name="enddate" type="java.util.Date">
<column name="ENDDATE" length="7" />
</property>
<property name="content" type="java.lang.String">
<column name="CONTENT" length="500" not-null="true" />
</property>
<property name="salespeopleid" type="java.lang.String">
<column name="SALESPEOPLEID" length="50" not-null="true" />
</property>
<property name="customerid" type="java.lang.String">
<column name="CUSTOMERID" length="50" not-null="true" />
</property>
<property name="createuserid" type="java.lang.String">
<column name="CREATEUSERID" length="50" not-null="true" />
</property>
<property name="createdate" type="java.util.Date">
<column name="CREATEDATE" length="7" not-null="true" />
</property>
<many-to-one name="tblsalepeople" column="salespeopleid" class="com.nicebridge.hcss.crm.hibernate.pojo.TblSalepeople" cascade="all" outer-join="true" />
</class>
</hibernate-mapping>
tblsb.setSalesbusinessid(saleDetailsForm.getSalesbusinessid());
tblsb.setTitle(saleDetailsForm.getTitle());
tblsb.setBegindate(getdate.getFormatOracleDate(saleDetailsForm.getBegindate()));
tblsb.setEnddate(getdate.getFormatOracleDate(saleDetailsForm.getEnddate()));
tblsb.setContent(saleDetailsForm.getContent());
tblsb.setSalespeopleid(saleDetailsForm.getSalespeopleid());
tblsb.setCustomerid(saleDetailsForm.getCustomerid());
tblsb.setCreateuserid(saleDetailsForm.getCreateuserid());
tblsb.setCreatedate(getdate.getFormatOracleDate(saleDetailsForm.getCreatedate()));
//tblsb.setTblsalepeople(salepeople);
spioperate.update(salebusiness);
package com.nicebridge.hcss.crm.hibernate.pojo;import java.io.Serializable;
import java.util.Date;public class TblSalesbusiness implements Serializable{
private String salesbusinessid;
private String title;
private Date begindate;
private Date enddate;
private String content;
private String salespeopleid;
private String customerid;
private String createuserid;
private Date createdate;
private TblSalepeople tblsalepeople;
public String getSalesbusinessid() {
return salesbusinessid;
}
public void setSalesbusinessid(String salesbusinessid) {
this.salesbusinessid = salesbusinessid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getBegindate() {
return begindate;
}
public void setBegindate(Date begindate) {
this.begindate = begindate;
}
public Date getEnddate() {
return enddate;
}
public void setEnddate(Date enddate) {
this.enddate = enddate;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getSalespeopleid() {
return salespeopleid;
}
public void setSalespeopleid(String salespeopleid) {
this.salespeopleid = salespeopleid;
}
public String getCustomerid() {
return customerid;
}
public void setCustomerid(String customerid) {
this.customerid = customerid;
}
public String getCreateuserid() {
return createuserid;
}
public void setCreateuserid(String createuserid) {
this.createuserid = createuserid;
}
public Date getCreatedate() {
return createdate;
}
public void setCreatedate(Date createdate) {
this.createdate = createdate;
}
public TblSalepeople getTblsalepeople() {
return tblsalepeople;
}
public void setTblsalepeople(TblSalepeople tblsalepeople) {
this.tblsalepeople = tblsalepeople;
}}
插入数据库方法 public void update(Object object){
Session session = sessionFactory.openSession();
Transaction tran = session.beginTransaction();
session.update(object);
tran.commit();
}
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.nicebridge.hcss.crm.hibernate.pojo.TblSalesbusiness" table="TBL_SALESBUSINESS" schema="SCOTT">
<id name="salesbusinessid" type="java.lang.String">
<column name="SALESBUSINESSID" length="50" />
<generator class="assigned" />
</id>
<property name="title" type="java.lang.String">
<column name="TITLE" length="100" not-null="true" />
</property>
<property name="begindate" type="java.util.Date">
<column name="BEGINDATE" length="7" />
</property>
<property name="enddate" type="java.util.Date">
<column name="ENDDATE" length="7" />
</property>
<property name="content" type="java.lang.String">
<column name="CONTENT" length="500" not-null="true" />
</property>
<property name="salespeopleid" type="java.lang.String">
<column name="SALESPEOPLEID" length="50" not-null="true" />
</property>
<property name="customerid" type="java.lang.String">
<column name="CUSTOMERID" length="50" not-null="true" />
</property>
<property name="createuserid" type="java.lang.String">
<column name="CREATEUSERID" length="50" not-null="true" />
</property>
<property name="createdate" type="java.util.Date">
<column name="CREATEDATE" length="7" not-null="true" />
</property>
<many-to-one name="tblsalepeople" column="salespeopleid" class="com.nicebridge.hcss.crm.hibernate.pojo.TblSalepeople" cascade="all" outer-join="true" />
</class>
</hibernate-mapping>
javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.nicebridge.hcss.crm.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:24)
root cause org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
com.nicebridge.hcss.crm.hibernate.operate.SalePeopleInfoOperate.update(SalePeopleInfoOperate.java:93)
com.nicebridge.hcss.crm.action.SaleDetailsAction.execute(SaleDetailsAction.java:122)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.nicebridge.hcss.crm.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:24)
root cause java.sql.BatchUpdateException: ORA-00957: 重复的列名 oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:342)
oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
com.nicebridge.hcss.crm.hibernate.operate.SalePeopleInfoOperate.update(SalePeopleInfoOperate.java:93)
com.nicebridge.hcss.crm.action.SaleDetailsAction.execute(SaleDetailsAction.java:122)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.nicebridge.hcss.crm.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:24)
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.nicebridge.hcss.crm.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:24)
root cause org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
com.nicebridge.hcss.crm.hibernate.operate.SalePeopleInfoOperate.update(SalePeopleInfoOperate.java:93)
com.nicebridge.hcss.crm.action.SaleDetailsAction.execute(SaleDetailsAction.java:122)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.nicebridge.hcss.crm.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:24)
root cause java.sql.BatchUpdateException: ORA-00957: 重复的列名 oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:342)
oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
com.nicebridge.hcss.crm.hibernate.operate.SalePeopleInfoOperate.update(SalePeopleInfoOperate.java:93)
com.nicebridge.hcss.crm.action.SaleDetailsAction.execute(SaleDetailsAction.java:122)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.nicebridge.hcss.crm.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:24)
如果不能Load实体。是不能更新的。其次主键状态很重要。
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.nicebridge.hcss.crm.hibernate.pojo.TblSalepeople" table="TBL_SALEPEOPLE" schema="SCOTT">
<id name="salespeopleid" type="java.lang.String">
<column name="SALESPEOPLEID" length="50" />
<generator class="assigned" />
</id>
<property name="employeeno" type="java.lang.String">
<column name="EMPLOYEENO" length="50" not-null="true" />
</property>
<property name="salespeopletypeid" type="java.lang.String">
<column name="SALESPEOPLETYPEID" length="50" not-null="true" />
</property>
<property name="business" type="java.lang.String">
<column name="BUSINESS" length="200" />
</property>
<many-to-one name="tblemployee" class="com.nicebridge.hcss.crm.hibernate.pojo.TblEmployee" update="true" column="employeeno" cascade="all" unique="true" />
<many-to-one name="tblsalespeopletype" column="salespeopletypeid" class="com.nicebridge.hcss.crm.hibernate.pojo.TblSalespeopletype" update="true" cascade="all" outer-join="true"/>
</class>
</hibernate-mapping>
package com.nicebridge.hcss.crm.hibernate.pojo;import java.io.Serializable;public class TblSalepeople implements Serializable{
private String salespeopleid;
private String employeeno;
private String salespeopletypeid;
private String business;
private TblEmployee tblemployee;
private TblSalespeopletype tblsalespeopletype;
public String getSalespeopleid() {
return salespeopleid;
}
public void setSalespeopleid(String salespeopleid) {
this.salespeopleid = salespeopleid;
}
public String getEmployeeno() {
return employeeno;
}
public void setEmployeeno(String employeeno) {
this.employeeno = employeeno;
}
public String getSalespeopletypeid() {
return salespeopletypeid;
}
public void setSalespeopletypeid(String salespeopletypeid) {
this.salespeopletypeid = salespeopletypeid;
}
public String getBusiness() {
return business;
}
public void setBusiness(String business) {
this.business = business;
} public TblEmployee getTblemployee() {
return tblemployee;
}
public void setTblemployee(TblEmployee tblemployee) {
this.tblemployee = tblemployee;
}
public TblSalespeopletype getTblsalespeopletype() {
return tblsalespeopletype;
}
public void setTblsalespeopletype(TblSalespeopletype tblsalespeopletype) {
this.tblsalespeopletype = tblsalespeopletype;
}
}
欢迎深圳的JAVA程序员加入,共同探讨技术与工作、项目合作、共享信息、结交朋友
加入请输入验证信息:SZJP
<column name="EMPLOYEENO" length="50" not-null="true" />
</property>
<many-to-one name="tblemployee" class="com.nicebridge.hcss.crm.hibernate.pojo.TblEmployee" update="true" column="employeeno" cascade="all" unique="true" />
你的2个column都是employeeno<property name="salespeopletypeid" type="java.lang.String">
<column name="SALESPEOPLETYPEID" length="50" not-null="true" />
</property>
<many-to-one name="tblsalespeopletype" column="salespeopletypeid" class="com.nicebridge.hcss.crm.hibernate.pojo.TblSalespeopletype" update="true" cascade="all" outer-join="true"/>
你的2个column都是salespeopletypeid
2 tblsb.setTitle(saleDetailsForm.getTitle());
3 tblsb.setBegindate(getdate.getFormatOracleDate(saleDetailsForm.getBegindate()));
4 tblsb.setEnddate(getdate.getFormatOracleDate(saleDetailsForm.getEnddate()));
5 tblsb.setContent(saleDetailsForm.getContent());
6 tblsb.setSalespeopleid(saleDetailsForm.getSalespeopleid());
7 tblsb.setCustomerid(saleDetailsForm.getCustomerid());
8 tblsb.setCreateuserid(saleDetailsForm.getCreateuserid());
1,7一样的
我没猜错的话,应该是跟数据库中哪条记录的主键重复了
这儿提示你不能更新,你得从这句入手。
首先数据更新你要能读出。读出呢主键就不用在给值,
主键也不能更改。更改别的数据。用断点看你的sql 语句是否正确。
根据这个思路你就可以解决的。
<property name="salespeopletypeid" type="java.lang.String">
<column name="SALESPEOPLETYPEID" length="50" not-null="true" />
</property>
<many-to-one name="tblsalespeopletype" column="salespeopletypeid" --------------------------------------------------------------------------------------------- <many-to-one name="tblsalespeopletype" class="类的全路径" fetch="select">
<column name="salespeopletypeid" not-null="true"--要不要看情况 unique="true"--要不要看情况>
<comment>注释写上</comment>
</column>
</many-to-one>
用主键LOAD对象(该对象存在),然后对该对象赋需要改变的值,然后在update提交给服务器的时候就出现和楼主一样的错误了。
期待高手解决啊!