表结构nno--------编号
money------金额
rec--------序号
oper-------提交人//hibernate生成类(A)
package cn.hibernate;
public class tjpayrec implements java.io.Serializable {
public tjpayrec() {
}
public tjpayrec(tjpayrecId id) {
this.id = id;
}
public tjpayrecId getId() {
return this.id;
}
public void setId(tjpayrecId id) {
this.id = id;
}
}//hibernate生成类(B)
package cn.hibernate;
import java.sql.Timestamp;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class tjpayrecId implements java.io.Serializable {
private Integer nno;
private Short rec;
private Double money;
         private String oper;
public tjpayrecId() {
}
public tjpayrecId(Integer nno, Short rec, Double money) {
this.nno = nno;
this.rec = rec;
this.money = money;
this.oper = oper;
}
public Integer getNno() {
return this.nno;
}..............................代码略.........!!!!!!!         @SuppressWarnings("unchecked")
public static Boolean pay(Integer nno) {
try {
Session s1=HibernateSessionFactory.getSession();
Transaction t1=s1.beginTransaction();
Double money;
Short rec;
tjpayrec f2=new tjpayrec();
tjpayrecId f1=new tjpayrecId();
          
//<<<系统提示:Unknown entity: cn.hibernate.tjpayrecId>>>------------请高手指点一下. money=10.0;
rec=1;
f1.setMoney(money);
f1.setOper("olylai");
f1.setNno(nno);
f1.setRec(rec);
f2.setId(f1);
s1.save(f2.getId());
t1.commit();
return true;
} catch (RuntimeException re) {
throw re;
}
}

解决方案 »

  1.   

    是不是没有在xml配置cn.hibernate.tjpayrecId????、
      

  2.   

    hibernate只是自动配置了cn.hibernate.tjpayrec,没有见到cn.hibernate.tjpayrecId的配置文件,要怎么配置呢?
      

  3.   

    你可以看一下你tjpayrec.hbm.xml,应该是联合主键的写法有问题.应该是形如
    <composite-id name="id" class="cn.hibernate.tjpayrecId">
                <key-property name="nno" type="string">
                    <column name="(这里不知道,和你的数据库列匹配)" length="50" />
                </key-property>
                <key-property name="money" type="Integer">
                    <column name="(这里不知道,和你的数据库列匹配)" length="50" />
                </key-property>
                <key-property name="rec" type="string">
                    <column name="(这里不知道,和你的数据库列匹配)" length="50" />
                </key-property>
                <key-property name="oper" type="string">
                    <column name="(这里不知道,和你的数据库列匹配)" length="50" />
                </key-property>
            </composite-id>
    的形式
      

  4.   

    <hibernate-mapping>
     <class catalog="SPP" name="cn.hibernate.tjpayrec" schema="dbo" table="tjpayrec">
      <composite-id class="cn.hibernate.tjpayrecId" mapped="false" name="id" unsaved-value="undefined">
       <key-property name="nno" type="java.lang.Integer">
        <column name="nno"/>
       </key-property>
       <key-property name="rec" type="java.lang.Short">
        <column name="rec"/>
       </key-property>
       <key-property name="money" type="java.lang.Double">
        <column name="money" precision="10"/>
       </key-property>
       <key-property name="oper" type="java.lang.String">
        <column length="10" name="oper"/>
       </key-property>
       </composite-id>
     </class>
    </hibernate-mapping>
      

  5.   

    cn.hibernate.tjpayrecId不需要配置的,联合主键的配置都在cn.hibernate.tjpayrec中实现,照理说用hibernate工具可以自动生成hbm.xml和类的.不知道你这里是怎么回事,难道是自己写的?
      

  6.   

    问题找到了.
    在你的hibernate.cfg.xml中+上
    <mapping   resource="tjpayrec.hbm.xml"/>
      

  7.   

    <composite-id class="cn.hibernate.tjpayrecId" mapped="false" name="id" unsaved-value="undefined"> 
    应该是这句有问题,再说了你的
    package cn.hibernate; 
    public class tjpayrec implements java.io.Serializable { 
    public tjpayrec() { 

    public tjpayrec(tjpayrecId id) { 
    this.id = id; 

    public tjpayrecId getId() { 
    return this.id; 

    public void setId(tjpayrecId id) { 
    this.id = id; 


    这个类里根本都没有定义tjpayrecId啊
    另外不知道是楼主的语法规范差还是工具傻,java类名都是小写字母开头的
      

  8.   

    http://www.diybl.com/course/3_program/java/javajs/20090912/174842.html
    看下这个帖子,不知道你是不是同样的问题
      

  9.   


    我把mppped设置成了true也不行哦.
      

  10.   

    <composite-id class="cn.hibernate.tjpayrecId"mapped="false" name="id" unsaved-value="undefined"> 中去掉mapped="false",unsaved-value="undefined"在class tjpayrec中增加tjpayrecId变量以及对应的get,set方法