他说我类的set方法有问题..但是我重新生成了.还是不能..org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.student.entity.Class.stu
Caused by: java.lang.IllegalArgumentException: argument type mismatch
Class.hbm.xml<hibernate-mapping>
<class name="com.student.entity.Class" table="class_info">
<id name="classId" type="int">
<column name="classId" not-null="true"/>
<generator class="identity"/>
</id>

<property name="className" type="string" column="className"/>

<set name="stu" inverse="true">
<key column="class_id"/>
<one-to-many class="com.student.entity.Student"/>
</set>
</class>
</hibernate-mapping>
Student.hbm.xml<hibernate-mapping>
<class name="com.student.entity.Student" table="student">
<id name="stuId">
<column name="stuId" not-null="true"/>
<generator class="identity"/>
</id>

<property name="stuName" type="string" column="stuName" not-null="false"/>
<property name="stuAddress" type="string" column="stuAddress" not-null="false"/>
<property name="stuJoinTime" type="date" column="stuJoinTime" not-null="false"/>

<one-to-one name="card" cascade="all"/>

<many-to-one name="clss" column="class_id" lazy="false"/>
</class>
</hibernate-mapping>Class.javapublic class Class {
private int classId;
private String className;
private Student stu;

public Student getStu() {
return stu;
}
public void setStu(Student stu) {
this.stu = stu;
}
public int getClassId() {
return classId;
}
public void setClassId(int classId) {
this.classId = classId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}

}
Student.javapublic class Student {
private int stuId;
private String stuName;
private String stuAddress;
private Date stuJoinTime;
private Card card;
private Class clss;


public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuAddress() {
return stuAddress;
}
public void setStuAddress(String stuAddress) {
this.stuAddress = stuAddress;
}
public Date getStuJoinTime() {
return stuJoinTime;
}
public void setStuJoinTime(Date stuJoinTime) {
this.stuJoinTime = stuJoinTime;
}
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
public Class getClss() {
return clss;
}
public void setClss(Class clss) {
this.clss = clss;
}

}

解决方案 »

  1.   

    你是在提交(form表单?)的时候报错还是?
      

  2.   

    如果是form 你看看页面数据绑定到form 时数据类型
    我下班咯...不好意思哈,~
      

  3.   


    不是..我是查询出来之后报错的
    public List<Student> findAll() {
    Session session = SessionUtil.getInstance().getSession();
    Transaction tx = session.beginTransaction();
    String hql = "from Student";
    List<Student> list = new ArrayList<Student>();
    try{

    Query query = session.createQuery(hql);
    list = (List<Student>)query.list();

    for (Student student : list) {
    System.out.println(student.getStuName());
    System.out.println(student.getClss().getClassName());
    }

    tx.commit();
    }catch (Exception e) {
    e.printStackTrace();
    tx.rollback();
    }
    return list;
    }
      

  4.   

    Class类里根本没有student的set嘛
      

  5.   

     System.out.println(student.getClss().getClassName());
      

  6.   

    这个问题好坑爹阿...我明明有set方法了..但是他还是报这个错误..郁闷.!
      

  7.   

    呵呵..现在又出别的问题了。。org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.student.entity.Class
      

  8.   

    这个不是说你的student类是处于瞬时状态的么?   看看你的这个的配置文件
      

  9.   

    Class.hbm.xml
    <hibernate-mapping>
    <class name="com.student.entity.Class" table="class_info">
    <id name="classId" type="int">
    <column name="classId" not-null="true"/>
    <generator class="identity"/>
    </id>

    <property name="className" type="string" column="className"/>

    <set name="stus" inverse="true">
    <key column="class_id"/>
    <one-to-many class="com.student.entity.Student"/>
    </set>
    </class>
    </hibernate-mapping>
      

  10.   

    serviceImpl
    这里都应该没啥问题吧 public void stuAdd(Student s) {
    Card card = new Card();
    card.setCardNum(s.getCard().getCardNum());

    card.setStu(s);

    s.setCard(card);

    com.student.entity.Class cls = new com.student.entity.Class();
    //cls.setClassId(s.getStuId());
    cls.setClassName(s.getClss().getClassName());

    cls.getStus().add(s);

    s.setClss(cls); dao.stuAdd(s);//最后student add进去baocun
    }
      

  11.   

    你配置文件错误了
    首先看你的class的DTO是一个多对一的关系
    而你的Class.hbm.xml里面却写的set那还不错误啊
    不知道你的关系到底是怎么样的
    如果是1对多
    那么就该classDTO里面加个set
    如果是多对1的话那么就该class.hbm.xml