这个错误困扰我很长时间.
org.apache.jasper.JasperException: object references an unsaved transient instance - save the transient instance before flushing: binbin.jsp1.Classn
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause 
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: binbin.jsp1.Classn
org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:242)
org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:597)
org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:3128)
org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:479)
org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:204)
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:127)
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
binbin.jsp1.Opdata.addstudent(Opdata.java:20)
org.apache.jsp.add_jsp._jspService(add_jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)public class Classn {

private Integer clid;
private String classname;
public void setClid(Integer clid){
this.clid=clid;
}
    public Integer getClid(){
     return this.clid;
    }
public void setClassname(String classname){
this.classname=classname;
}
    public String getClassname(){
     return this.classname;
    }
}
package binbin.jsp1;
import binbin.jsp1.Classn;
public class Student {
private Integer studentid;
private String studentname;
private Classn classn;
public void setStudentid(Integer studentid){
this.studentid=studentid;
}
    public Integer getStudentid(){
     return this.studentid;
    }
public void setStudentname(String studentname){
this.studentname=studentname;
}
    public String getStudentname(){
     return this.studentname;
    }
    public void setClassn(Classn classn){
this.classn=classn;
}
    public Classn getClassn(){
     return this.classn;
    }
}Cs.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">
<hibernate-mapping>
  <class name="binbin.jsp1.Classn" table="classn">
    <id name="clid" type="int">
       <generator class="identity"/>
    </id>
    <property name="classname" type="string"/>
  </class>
  <class name="binbin.jsp1.Student" table="student">
    <id name="studentid" type="int">
       <generator class="identity"/>
    </id>
    <property name="studentname" type="string"/>
    <many-to-one name="classn" class="binbin.jsp1.Classn" column="clid" />
  </class>
</hibernate-mapping>hibernate.hbm.xml文件
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
    <property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=school</property>
    <property name="connection.username">cs</property>
    <property name="connection.password">1</property>
    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    <mapping resource="/Cs.hbm.xml"/>
  </session-factory>
</hibernate-configuration>
测试:
public void addstudent(String stuname,String claname){
SessionFactory sf=new Configuration().configure().buildSessionFactory();
Session ses=sf.openSession();
                  Classn cla=new Classn();
                  cla.setClassname(claname);
                  Student stu=new Student();
  stu.setStudentname(stuname);
                  stu.setClassn(cla);
                Transaction tx=ses.beginTransaction();
                  ses.save(stu);
                  ses.save(cla);
tx.commit();
               ses.close();
}