Course和CourseCollect分别表示课程和课程收藏. 它们之间是一对多的关系, 即一个课程可以被多个人收藏. 对应的Bean类及hibernate配置文件如下:
Course类 代码
- package mypackage;
-
-
-
-
-
- public class Course implements java.io.Serializable {
-
-
-
- private String id;
-
- private String name;
-
-
-
- }
CourseCollect类 代码
- package mypackage;
-
-
-
-
-
- public class CourseCollect implements java.io.Serializable {
-
-
-
-
- private Integer collectionId;
- private Course course;
- private Integer userId;
-
-
-
- }
Course映射配置 代码
xml 代码
- <hibernate-mapping>
- <class name="mypackage.Course" table="tbl_Course">
- <id name="id" type="java.lang.String">
- <column name="CourseId" length="48" />
- <generator class="assigned">generator>
- <id>
- <property name="name" type="java.lang.String">
- <column name="Name" length="256" />
- property>
- class>
- hibernate-mapping>
CourseCollect映射配置 代码
xml 代码
- <hibernate-mapping>
- <class name="mypackage.CourseCollect" table="tbl_UserCollection_Course" >
- <id name="collectionId" type="java.lang.Integer">
- <column name="CollectionId" />
- <generator class="native">generator>
- id>
- <property name="userId" type="java.lang.Integer">
- <column name="UserId" />
- property>
- <many-to-one name="course" class="mypackage.Course" fetch="select">
- <column name="Course" length="48" />
- many-to-one>
- class>
- hibernate-mapping>
这样的配置在执行以下这个调用时出现了异常:
java 代码
- private static final String BOOL_COURSE_ISCOLLECT = "from CourseCollect where userId=? and course=?";
-
//通过userId和课程调用查找方法,以判断用户是否已收藏某门课程
- find(BOOL_COURSE_ISCOLLECT,new Object[]{userId,courseId});
异常信息:
- 严重: IllegalArgumentException in class: mypackage.Course, getter method of property: id
- org.springframework.orm.hibernate3.HibernateSystemException:
- IllegalArgumentException occurred calling getter of mypackage.Course.id;
- nested exception is org.hibernate.PropertyAccessException:
- IllegalArgumentException occurred calling getter of mypackage.Course.id
- Caused by: org.hibernate.PropertyAccessException:
- IllegalArgumentException occurred calling getter of mypackage.Course.id
- at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171)
- at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:183)
- at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3591)
- at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3307)
- at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:181)
- at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:218)
- at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
- at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:87)
- at org.hibernate.param.PositionalParameterSpecification.bind(PositionalParameterSpecification.java:39)
- at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:67)
- at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:396)
- at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:259)
- at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1141)
- at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
- at org.springframework.orm.hibernate3.HibernateTemplate$38.doInHibernate(HibernateTemplate.java:1063)
- at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367)
- at org.springframework.orm.hibernate3.HibernateTemplate.bulkUpdate(HibernateTemplate.java:1054)
如果把其中Course中的id改为int类型的话是没有问题的. 另外如果把运行的HQL语句改为:
改过的HQL语句
- private static final String BOOL_COURSE_ISCOLLECT = "from CourseCollect where userId=? and course.id=?";
运行也没有问题(即将"course=?"这个条件改为"course.id=?"). 但是这样处理总感觉有点怪怪的, 毕竟建了关联但是没用到.
请教各位大侠这是什么原因, 应该怎么解决(除以上两种方法外).
分享到:
相关推荐
问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,
请教几个数学问题
问题请教高手问题请教高手
请教C语言问题
[合集] 请教两个网原问题.docx
新版消防问题请教2016..pdf
SVPWMSimulink问题请教-svpwm.mdl 这个论坛里网有上传的SVPWM文件,为什么仿真的时候总是提示TS没有定义,在哪定义TS?
计算能带,从网上下载的不能算,请教怎麽算
同学们,明天要有很多领导和老师到我们班里来听课,一想起来老师的心呀就怦怦直跳。老师心里有些紧张了。我想请教请教同学们,怎样做才会让老师不紧张,不害怕呢?(学生自由发言) 哦,谢谢同学们了,听你们这么一...
请教一下各位大神,我想新增一个类模块 应该如何做
请教 STM32 工作时发热的问题第一次使用 STM32 的芯片,根据手册了解到它的 IO 脚是支持 5V 的电平的,于是我利用了几个 IO 引脚直接与 5V
AD封装库导入eda问题请教-封装库.zip
请教语音识别的问题高手进-hello.rar 我想请问如果我自己录了一段音,想去除其中机械噪声那一部分,应该如何用傅里叶变换处理呢。请高手指导matlab的实现方式,小弟不甚感激!
4、监控报警的阈值一般在多少 6、公司有多少台服务器,服务器的配置如何(CPU 内存 硬盘),每台服务器运行多少台虚拟机 7、服务器的大概架构是怎么样的 9、负
请教Matlab的一个图像拼接的源代码-pinjie.m 希望哥哥姐姐们给些指教,主要是为了学习,介绍个简单的源代码就可以了,谢谢
Stateflow模型问题请教-test2.mdl QQ截图20120611222714.png 附件中的ReqST=2,运行的时候为什么不能从St1转移到St2呢?麻烦指教一下,谢谢!
pb打印(请教),下了个源码,不知道怎么看 请教老师
部编三年级上册语文口语交际:请教
请教:用vb写了一个打印当前页的命令,但总是出现打印窗口,有没有办法不出现这个窗口直接打印 悬赏分:25 - 解决时间:2010-2-4 11:07 因为经常需要打印当前的某一页而不是全部,所以在网上找到这个命令,建立宏...
三年级上语文口语交际请教PPT教案.pptx