使用criteria按复合主键某个字段条件查询的问题

时间:2008-07-25 22:31:49   来源:论坛整理  作者:  编辑:chinaitzhe
使用以下代码
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





        Criteria criteria = session.createCriteria(ZYxaqStationSignalXy.class);

    criteria.add(Expression.eq("id.jkdataId",jkdataId));

    criteria.add(Expression.eq("id.jiaoluNo",jlh));    

    criteria.add(Expression.eq("id.sxx",sxx));    

    Iterator it= criteria.list().iterator();




其中pojo类ZYxaqStationSignalXy中有复合主键ZYxaqStationSignalXyId id, ZYxaqStationSignalXyId的类型如下:
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





     private Long jkdataId;

     private Long jiaoluNo;

     private Long sxx;

     private Long stationNo;

     private Long signalType;




当执行到 Iterator it= criteria.list().iterator(); 时报错:"java.lang.ClassCastException"
,换成hql查询就没有问题:
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





        String hql = "from ZYxaqStationSignalXy as p where p.id.jkdataId=:jkDataId and p.id.jiaoluNo=:jlh and p.id.sxx=:sxx";

    Query q = session.createQuery(hql);

    q.setString("jkDataId", jkdataId);

    q.setString("jlh", jlh);

        q.setString("sxx", sxx);

        List list = q.list();




请问是怎么回事?会不会是类型问题,复合主键的类是long,用eq方法是不是不行?
网友回复:是类型的问题,感觉应该是与数据库中的类型不匹配
网友回复:数据库中确实是数字型啊
网友回复:该回复于2008-05-01 05:44:22被版主删除
关键字:使用,criteria,复合,主键,字段,条件,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面