请高手给我指点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>

解决方案 »

  1.   

    错误
    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)
      

  2.   

    贴出错误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)
      

  3.   

    重复的列名 这个错误信息很重要,寻找ing
      

  4.   

    根据主键LOAD实体。然后更新!
    如果不能Load实体。是不能更新的。其次主键状态很重要。
      

  5.   

    列名重复,log上说的很明白啊
      

  6.   

     删除 tblsb.setSalesbusinessid(saleDetailsForm.getSalesbusinessid());执行更新操作,主键不用再set....
      

  7.   


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

  8.   

    深圳JAVA J2EE QQ①群 32763598 深圳JAVA J2EE QQ②群  6086837
    欢迎深圳的JAVA程序员加入,共同探讨技术与工作、项目合作、共享信息、结交朋友   
      加入请输入验证信息:SZJP
      

  9.   

    <property name="employeeno" type="java.lang.String">
                <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
      

  10.   

             1   tblsb.setSalesbusinessid(saleDetailsForm.getSalesbusinessid());
             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一样的
      

  11.   

    ORA-00957: 重复的列名 
    我没猜错的话,应该是跟数据库中哪条记录的主键重复了
      

  12.   

    javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update 
    这儿提示你不能更新,你得从这句入手。
    首先数据更新你要能读出。读出呢主键就不用在给值,
    主键也不能更改。更改别的数据。用断点看你的sql  语句是否正确。
    根据这个思路你就可以解决的。
      

  13.   

    哇!!写的好规范呀!!
    <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>
      

  14.   

    插入的方法应该是SAVE吧?……
      

  15.   

    我在用EJB3的时候也碰到这样的情况,我更新操作是:
    用主键LOAD对象(该对象存在),然后对该对象赋需要改变的值,然后在update提交给服务器的时候就出现和楼主一样的错误了。
    期待高手解决啊!