具体Account类代码由hibernate工具生成,代码如下:
package com.mccs.persistence;import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;/** @author Hibernate CodeGenerator */
public class Account implements Serializable {    /** identifier field */
    private String id;    /** nullable persistent field */
    private String aname;    /** nullable persistent field */
    private String agno;    /** nullable persistent field */
    private String avno;    /** full constructor */
    public Account(String aname, String agno, String avno) {
        this.aname = aname;
        this.agno = agno;
        this.avno = avno;
    }    /** default constructor */
    public Account() {
    }    public String getId() {
        return this.id;
    }    public void setId(String id) {
        this.id = id;
    }    public String getAname() {
        return this.aname;
    }    public void setAname(String aname) {
        this.aname = aname;
    }    public String getAgno() {
        return this.agno;
    }    public void setAgno(String agno) {
        this.agno = agno;
    }    public String getAvno() {
        return this.avno;
    }    public void setAvno(String avno) {
        this.avno = avno;
    }    public String toString() {
        return new ToStringBuilder(this)
            .append("id", getId())
            .toString();
    }    public boolean equals(Object other) {
        if ( !(other instanceof Account) ) return false;
        Account castOther = (Account) other;
        return new EqualsBuilder()
            .append(this.getId(), castOther.getId())
            .isEquals();
    }    public int hashCode() {
        return new HashCodeBuilder()
            .append(getId())
            .toHashCode();
    }}

解决方案 »

  1.   

    Account.hbm.xml文件如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping>
    <class name="com.mccs.persistence.Account" table="account">
    <id column="ano" name="id" type="string">
    <generator class="uuid.hex"/>
    </id>
    <property column="aname" length="50" name="aname" type="string"/>
    <property column="agno" length="20" name="agno" type="string"/>
    <property column="avno" length="1" name="avno" type="string"/>
    </class>
    </hibernate-mapping>
      

  2.   

    服务器日志如下:
    <2004-7-18 下午20时21分14秒 CST> <Notice> <WebLogicServer> <BEA-000331> <Started WebLogic Admin Server "myserver" for domain "mydomain" running in Development Mode>  
    <2004-7-18 下午20时21分14秒 CST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>  
    <2004-7-18 下午20时21分14秒 CST> <Notice> <WebLogicServer> <BEA-000355> <Thread "ListenThread.Default" listening on port 7001, ip address *.*>  
    log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment). 
    log4j:WARN Please initialize the log4j system properly. 
    ano = a1Hibernate: insert into account (aname, agno, avno, ano) values (?, ?, ?, ?) 
    net.sf.hibernate.JDBCException: could not insert: [com.mccs.persistence.Account#40288083fdd232f100fdd23307400001] 
    at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:478) 
    at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:442) 
    at net.sf.hibernate.impl.ScheduledInsertion.execute(ScheduledInsertion.java:29) 
    at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2414) 
    at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2367) 
    at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2236) 
    at com.mccs.database.anExample.accountFacade.insert(accountFacade.java:71) 
    at jsp_servlet.__anexample._jspService(__anexample.java:144) 
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) 
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053) 
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387) 
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:431) 
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) 
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622) 
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569) 
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) 
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) 
    Caused by: java.sql.SQLException: 将截断字符串或二进制数据。 Severity 16, State 2, Procedure 'HAERBINLJS null', Line 1 
    at weblogic.jdbc.mssqlserver4.TdsStatement.processWarning(TdsStatement.java:1193) 
    at weblogic.jdbc.mssqlserver4.TdsStatement.parseMsWarning(TdsStatement.java:1104) 
    at weblogic.jdbc.mssqlserver4.TdsStatement.getMoreResults(TdsStatement.java:771) 
    at weblogic.jdbc.mssqlserver4.TdsStatement.execute(TdsStatement.java:210) 
    at weblogic.jdbc.mssqlserver4.TdsStatement.executeUpdate(TdsStatement.java:97) 
    at weblogic.jdbc.mssqlserver4.TdsStatement.executeUpdate(TdsStatement.java:1470) 
    at weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:95) 
    at net.sf.hibernate.impl.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:22) 
    at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:468) 
    ... 19 more 
    请高手指教!小弟感激不尽
      

  3.   

    <id column="ano" name="id" type="string">
    <generator class="uuid.hex"/>
    </id>
    修改成:
    <id column="ano" name="id" type="string">
    <generator class="assigned"/>
    </id>
    插入数据时,给id指定值,试一下