java.lang.Integer cannot be cast to

public List<Materials> findAllMaterialsByAppid(Integer appid) {
    String hql1 = "select medid from Materials where appid = ? and pid = 0";
    List<Materials> list = this.hibernateTemplate.find(hql1, appid);
    if (list != null && list.size() > 0) {
        if(list.get(0).getMedid() != null){
            Integer medid = (Integer)list.get(0).getMedid();
            String hql2 = "from Materials where appid = ? and pid = ?";
            return this.hibernateTemplate.find(hql2, appid, medid);
        }

请教一下大家

String hql1 = "from Materials where appid = ? and pid = 0";

错误贴完整,Materials的各个属性贴上来

Integer medid = (Integer)list.get(0).getMedid(); 应该是这行代码导致的。
Materials中的属性medid是什么数据类型的?

最好贴完整一点,看看具体是哪一行报错。

不过我猜测一下是不是这行的问题:
[code="java"]
Integer medid = (Integer)list.get(0).getMedid();
[/code]

你改为:

[code="java"]
Integer medid = (Integer)(list.get(0).getMedid());
[/code]
或者
[code="java"]
Integer medid = ((Materials)list.get(0)).getMedid();
[/code]

试试。

你SELECT 语句中是取 medid
String hql1 = "select medid from Materials where appid = ? and pid = 0";

但实际上你是相取是的Materials 这个对象
这样的转换肯定有问题,
你想要的SQL应该是这样的吧:
String hql1 = "select * from Materials where appid = ? and pid = 0";