他说我类的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;
}
}
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;
}
}
解决方案 »
- SSH问题,There is no Action mapped for action name null. - [unknown location]
- 求解决 !!!
- struts2 标签接受JSP脚本 URL传参加号丢失问题
- jsp如何实现动态显示时间
- 求助:jsp中的request.getParameter(String varName)方法中的varName是变量该如何解决
- 链接打开中文名称word文档,显示不存在。
- 谁知道哪里有免费的jsp个人主页空间申请呀
- JSP能实现服务器和客户端的交互吗?
- 50散分了,向高手求助:PreparedStatement的问题!!
- 用过jspsmartupload的兄弟请进,搜索了不少,还是不行
- 为什么在jsp中写${pageContext.request.contextPath }失效了
- 给高度赋值问题
我下班咯...不好意思哈,~
不是..我是查询出来之后报错的
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;
}
<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>
这里都应该没啥问题吧 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
}
首先看你的class的DTO是一个多对一的关系
而你的Class.hbm.xml里面却写的set那还不错误啊
不知道你的关系到底是怎么样的
如果是1对多
那么就该classDTO里面加个set
如果是多对1的话那么就该class.hbm.xml