首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-11-19 
请教一个配置一对多关系的问题Course和CourseCollect分别表示课程和课程收藏. 它们之间是一对多的关系, 即

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

    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=?"). 但是这样处理总感觉有点怪怪的, 毕竟建了关联但是没用到.
    ??
    请教各位大侠这是什么原因, 应该怎么解决(除以上两种方法外). 1 楼 hunteagle 2007-08-07   怎么显示的XML代码这么乱, 多了好多<!--</span-->这个东西. 不知道大家看不看得清... 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

热点排行