`
hunteagle
  • 浏览: 88786 次
社区版块
存档分类
最新评论

请教一个配置一对多关系的问题

阅读更多
Course和CourseCollect分别表示课程和课程收藏. 它们之间是一对多的关系, 即一个课程可以被多个人收藏. 对应的Bean类及hibernate配置文件如下:

Course类 代码
 
  1. package mypackage;  
  2.   
  3. /** 
  4.  * Course 课程 
  5.  */  
  6.   
  7. public class Course implements java.io.Serializable {  
  8.   
  9.     // Fields  
  10.   
  11.     private String id;//课程Id  
  12.   
  13.     private String name;//课程名称  
  14.   
  15.         //setters and getters...  
  16.   
  17. }  
CourseCollect类 代码
 
  1. package mypackage;  
  2.   
  3. /** 
  4.  * UserCollectionCourse 用户收集的课程信息 
  5.  */  
  6.   
  7. public class CourseCollect  implements java.io.Serializable {  
  8.   
  9.   
  10.     // Fields      
  11.   
  12.      private Integer collectionId;//  
  13.      private Course course;//课程  
  14.      private Integer userId;//用户ID  
  15.   
  16.      //setters and getters  
  17.   
  18. }  

Course映射配置 代码
xml 代码
  1. <hibernate-mapping>      
  2.     <class name="mypackage.Course" table="tbl_Course">      
  3.         <id name="id" type="java.lang.String">      
  4.             <column name="CourseId" length="48" />      
  5.             <generator class="assigned">generator>      
  6.         <id>      
  7.         <property name="name" type="java.lang.String">      
  8.             <column name="Name" length="256" />      
  9.         property>      
  10.     class>      
  11. hibernate-mapping>    
CourseCollect映射配置 代码
xml 代码
  1. <hibernate-mapping>      
  2.     <class name="mypackage.CourseCollect" table="tbl_UserCollection_Course" >      
  3.         <id name="collectionId" type="java.lang.Integer">      
  4.             <column name="CollectionId" />      
  5.             <generator class="native">generator>      
  6.         id>      
  7.         <property name="userId" type="java.lang.Integer">      
  8.             <column name="UserId" />      
  9.         property>      
  10.         <many-to-one name="course" class="mypackage.Course" fetch="select">      
  11.             <column name="Course" length="48" />      
  12.         many-to-one>      
  13.     class>      
  14. hibernate-mapping>   

这样的配置在执行以下这个调用时出现了异常:
java 代码
 
  1. private static final  String BOOL_COURSE_ISCOLLECT = "from CourseCollect where userId=? and course=?";  
  2.  
    //通过userId和课程调用查找方法,以判断用户是否已收藏某门课程  
  3. find(BOOL_COURSE_ISCOLLECT,new Object[]{userId,courseId});

    异常信息:
 
  1. 严重: IllegalArgumentException in class: mypackage.Course, getter method of property: id  
  2. org.springframework.orm.hibernate3.HibernateSystemException:
  3. IllegalArgumentException occurred calling getter of mypackage.Course.id;
  4. nested exception is org.hibernate.PropertyAccessException:
  5. IllegalArgumentException occurred calling getter of mypackage.Course.id  
  6. Caused by: org.hibernate.PropertyAccessException:
  7. IllegalArgumentException occurred calling getter of mypackage.Course.id  
  8.     at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171)  
  9.     at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:183)  
  10.     at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3591)  
  11.     at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3307)  
  12.     at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:181)  
  13.     at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:218)  
  14.     at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)  
  15.     at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:87)  
  16.     at org.hibernate.param.PositionalParameterSpecification.bind(PositionalParameterSpecification.java:39)  
  17.     at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:67)  
  18.     at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:396)  
  19.     at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:259)  
  20.     at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1141)  
  21.     at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)  
  22.     at org.springframework.orm.hibernate3.HibernateTemplate$38.doInHibernate(HibernateTemplate.java:1063)  
  23.     at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367)  
  24.     at org.springframework.orm.hibernate3.HibernateTemplate.bulkUpdate(HibernateTemplate.java:1054)  

如果把其中Course中的id改为int类型的话是没有问题的. 另外如果把运行的HQL语句改为:

改过的HQL语句
 
  1. private static final  String BOOL_COURSE_ISCOLLECT = "from CourseCollect where userId=? and course.id=?";  

运行也没有问题(即将"course=?"这个条件改为"course.id=?"). 但是这样处理总感觉有点怪怪的, 毕竟建了关联但是没用到.
  
请教各位大侠这是什么原因, 应该怎么解决(除以上两种方法外).
分享到:
评论
2 楼 jinlibing 2007-08-07  
http://www.java2s.com/Code/Java/Hibernate/Relation-One-to-Many.htm

http://www.java2s.com/Code/Java/Hibernate/Relation-Many-to-Many.htm
1 楼 hunteagle 2007-08-07  
怎么显示的XML代码这么乱, 多了好多<!--</span-->这个东西. 不知道大家看不看得清...

相关推荐

    windows03下DB2双机配置手记.rar

    DB2作为IBM提供的一个强大关系型数据库管理系统,具有丰富的特性和高度的可靠性。在Windows Server 2003环境下,实现DB2的双机配置是确保业务连续性和数据安全的有效方式。以下是对"windows03下DB2双机配置手记"的...

    NiosII开发常见问题

    概述:本文档总结了 NiosII 开发中常见的问题,涵盖了硬件和软件两个方面,为初学者提供了有价值的参考信息。 一、硬件相关: 1.1 EPCS1(1Mbits)是什么作用? EPCS1 是 Altera 专用配置芯片,用于保存 FPGA 的...

    SAP常见问题处理手册.pdf

    销售订单项目多重计划行是指在一个销售订单项下存在多个计划行的情况,通常用于处理复杂的销售场景,例如: - **需求计划**:对于某些特殊的产品,可能需要根据不同的生产批次进行计划。 - **交货计划**:为了满足...

    计算机专业学生实习总结范文.docx

    - 主动介绍自己,让同事对自己有一个基本的了解。 - 明确表达自己的兴趣所在,以便得到更有针对性的指导。 - 虚心请教,表现出对学习的热情。 - 定期汇报工作进展,寻求反馈。 #### 三、激情与耐心 - **激情的...

    浙江省公务员考试面试题目汇总120211030015257.doc

    ”这个问题要求考生理解政府的角色和责任,强调政府应当以公众利益为中心,提供高效、透明、廉洁的服务。回答时,可以从政策制定、公共服务、社会治理、经济发展等多个角度阐述。 3. 民营经济的认识 题目中询问如何...

    2021大学生计算机实习日记.pdf

    1. 实习经历:这是一位大学生在联通系统集成有限公司山东省分公司进行计算机实习的经历,涵盖了从入职介绍到日常工作的多个阶段。 2. 公司运营模式:实习生了解到公司的基本运营模式和员工的工作方式,熟悉了企业...

    大学生个人实习总结经典范文【5篇】.docx

    首先,在实习初期,我作为一个刚走出大学校园的实习生,我对工作环境的适应,以及对工作岗位的理解都经历了一段艰难的时期。在学校里学习的都是理论知识,而在实习中需要我把这些理论知识运用到实际的工作中去。这...

    彝良事业编招聘2017年考试真题及答案解析最全版.docx

    第九题是词语辨析,“表扬”和“恭维”虽然都涉及到对他人的正面评价,但“恭维”带有刻意讨好的意味,而“肯定”和“认可”则是对事物的赞同,与“相信”和“迷信”、“请教”和“求教”类似,都是近义词但含义略有...

    网吧社会实践报告.doc

    保持谦逊的态度,专注于每一个细节,这是做好任何工作的前提。 通过以上分析,我们可以看出,这份网吧社会实践报告不仅展示了作者在计算机领域的实际操作经验,还强调了个人品质和职业素养的重要性。这些经验和知识...

    20xx年6月个人述职报告5.docx

    - 深入配送商基层作业团队,熟悉每一个作业细节,确保作业标准得到严格执行。 - 商品车到达后,需立即进行卸车监督、点检、入库,并及时通知专营店相关信息,促进业务流程的顺畅进行。 3. **与专营店的交流与服务...

    信息网络科技维护实习总结范文.doc

    通过自学和向专家请教,我掌握了电力线载波通信的原理,理解了如何利用这一技术实现远程数据传输和自动化抄表,这不仅锻炼了我的自学能力,也增强了我对新技术的敏感度和适应性。 在自动化工程部,我参与了多个自动...

    员工实习期满个人工作总结.docx

    6. 不足与改进:员工应自我反思,识别自己的不足,如对生产工艺的不熟悉、人员关系的处理、工作规划的缺乏等,并寻求改进方法,如多学习、多请教、多实践,以提高业务水平。 7. 企业发展与管理:公司处在转型期,...

    施工单位副经理述职报告三篇.docx

    以上内容反映了施工单位副经理在项目管理中的全面职责,包括理论学习、实践应用、团队领导、风险应对和成本效益等多个层面,体现出专业且负责任的工作态度。通过这样的述职报告,可以评估副经理的工作绩效,也为未来...

    ARM经典300问.pdf

    **问题**:即常数是由一个8位的常数循环移位偶数位得到,这句话如何理解?该常数必须对应8位位图,既然是8位位图,那么取值为0-255,怎么0x3FC这种超出255的数是合法常量呢? **答案**: 1. **理解8位位图立即数**...

    三年级上册道德与法治知识点.docx

    - **校园服务部门**:学校内设有多个服务部门,比如大队部、后勤处、医务室等,它们分别负责不同的事务。 - **绘制校园地图**:通过绘制校园平面示意图,加深对学校布局的理解。 ##### 5. 走近我们的老师 - **教师...

    领导如何树立威信.doc

    总结来说,领导者威信的建立是一个全方位的过程,涉及到道德品质、公正无私、能力展示、诚实守信、业绩表现以及人际关系的处理等多个层面。通过这些方面的努力,领导者可以逐渐形成强大的威信,推动团队向前发展。在...

    通信工程专业毕业实习报告.doc

    中国移动是一家基于GSM和TD-SCDMA制式网络的移动通信运营商,其建成了一个覆盖范围广、通信质量高、业务品种丰富、效劳水平一流的移动通信网络。 现在的通信正向光通信网络转变,其运营商都正在进展光网络的转型中...

    商科人才培养与探索PowerPointPresent.pptx

    【知识点详解】 1. **管理理念**:商科人才培养中,管理被比喻为"供、产、销"的流程,即招生、...这些知识点体现了商科人才培养中的管理理念、价值观和实践策略,旨在构建一个高效、和谐且具有人文关怀的教育环境。

    财务周工作计划10篇.docx

    - **稽核流程**:定期对营业款进行核对,确保金额准确无误。 - **异常处理**: - 发现差异时立即查找原因,必要时向上级汇报。 - 记录所有的核对过程和结果,作为审计证据。 - 定期培训员工关于现金管理和账目...

Global site tag (gtag.js) - Google Analytics