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=?"). 但是这样处理总感觉有点怪怪的, 毕竟建了关联但是没用到.
请教各位大侠这是什么原因, 应该怎么解决(除以上两种方法外).
分享到:
相关推荐
DB2作为IBM提供的一个强大关系型数据库管理系统,具有丰富的特性和高度的可靠性。在Windows Server 2003环境下,实现DB2的双机配置是确保业务连续性和数据安全的有效方式。以下是对"windows03下DB2双机配置手记"的...
概述:本文档总结了 NiosII 开发中常见的问题,涵盖了硬件和软件两个方面,为初学者提供了有价值的参考信息。 一、硬件相关: 1.1 EPCS1(1Mbits)是什么作用? EPCS1 是 Altera 专用配置芯片,用于保存 FPGA 的...
销售订单项目多重计划行是指在一个销售订单项下存在多个计划行的情况,通常用于处理复杂的销售场景,例如: - **需求计划**:对于某些特殊的产品,可能需要根据不同的生产批次进行计划。 - **交货计划**:为了满足...
- 主动介绍自己,让同事对自己有一个基本的了解。 - 明确表达自己的兴趣所在,以便得到更有针对性的指导。 - 虚心请教,表现出对学习的热情。 - 定期汇报工作进展,寻求反馈。 #### 三、激情与耐心 - **激情的...
”这个问题要求考生理解政府的角色和责任,强调政府应当以公众利益为中心,提供高效、透明、廉洁的服务。回答时,可以从政策制定、公共服务、社会治理、经济发展等多个角度阐述。 3. 民营经济的认识 题目中询问如何...
1. 实习经历:这是一位大学生在联通系统集成有限公司山东省分公司进行计算机实习的经历,涵盖了从入职介绍到日常工作的多个阶段。 2. 公司运营模式:实习生了解到公司的基本运营模式和员工的工作方式,熟悉了企业...
首先,在实习初期,我作为一个刚走出大学校园的实习生,我对工作环境的适应,以及对工作岗位的理解都经历了一段艰难的时期。在学校里学习的都是理论知识,而在实习中需要我把这些理论知识运用到实际的工作中去。这...
第九题是词语辨析,“表扬”和“恭维”虽然都涉及到对他人的正面评价,但“恭维”带有刻意讨好的意味,而“肯定”和“认可”则是对事物的赞同,与“相信”和“迷信”、“请教”和“求教”类似,都是近义词但含义略有...
保持谦逊的态度,专注于每一个细节,这是做好任何工作的前提。 通过以上分析,我们可以看出,这份网吧社会实践报告不仅展示了作者在计算机领域的实际操作经验,还强调了个人品质和职业素养的重要性。这些经验和知识...
- 深入配送商基层作业团队,熟悉每一个作业细节,确保作业标准得到严格执行。 - 商品车到达后,需立即进行卸车监督、点检、入库,并及时通知专营店相关信息,促进业务流程的顺畅进行。 3. **与专营店的交流与服务...
通过自学和向专家请教,我掌握了电力线载波通信的原理,理解了如何利用这一技术实现远程数据传输和自动化抄表,这不仅锻炼了我的自学能力,也增强了我对新技术的敏感度和适应性。 在自动化工程部,我参与了多个自动...
6. 不足与改进:员工应自我反思,识别自己的不足,如对生产工艺的不熟悉、人员关系的处理、工作规划的缺乏等,并寻求改进方法,如多学习、多请教、多实践,以提高业务水平。 7. 企业发展与管理:公司处在转型期,...
以上内容反映了施工单位副经理在项目管理中的全面职责,包括理论学习、实践应用、团队领导、风险应对和成本效益等多个层面,体现出专业且负责任的工作态度。通过这样的述职报告,可以评估副经理的工作绩效,也为未来...
**问题**:即常数是由一个8位的常数循环移位偶数位得到,这句话如何理解?该常数必须对应8位位图,既然是8位位图,那么取值为0-255,怎么0x3FC这种超出255的数是合法常量呢? **答案**: 1. **理解8位位图立即数**...
- **校园服务部门**:学校内设有多个服务部门,比如大队部、后勤处、医务室等,它们分别负责不同的事务。 - **绘制校园地图**:通过绘制校园平面示意图,加深对学校布局的理解。 ##### 5. 走近我们的老师 - **教师...
总结来说,领导者威信的建立是一个全方位的过程,涉及到道德品质、公正无私、能力展示、诚实守信、业绩表现以及人际关系的处理等多个层面。通过这些方面的努力,领导者可以逐渐形成强大的威信,推动团队向前发展。在...
中国移动是一家基于GSM和TD-SCDMA制式网络的移动通信运营商,其建成了一个覆盖范围广、通信质量高、业务品种丰富、效劳水平一流的移动通信网络。 现在的通信正向光通信网络转变,其运营商都正在进展光网络的转型中...
【知识点详解】 1. **管理理念**:商科人才培养中,管理被比喻为"供、产、销"的流程,即招生、...这些知识点体现了商科人才培养中的管理理念、价值观和实践策略,旨在构建一个高效、和谐且具有人文关怀的教育环境。
- **稽核流程**:定期对营业款进行核对,确保金额准确无误。 - **异常处理**: - 发现差异时立即查找原因,必要时向上级汇报。 - 记录所有的核对过程和结果,作为审计证据。 - 定期培训员工关于现金管理和账目...