我是用的HQL查询怎么得到你们的值??

[code="java"] public List getSelectOptions(Long parentid) {
// 添加或修改后,将该类型的子类进行有效的排序
String hql4 = "select t.id,t.parentid,t.typename from DrugType t connect by t.parentid = prior t.id start with t.parentid=?";
List lists = drugTypeBiz.selByHql(hql4);

    for (int i = 0; i < lists.size(); i++) {
        Long id =    ;
        Long parent =    ;
        String typename =    ;
        DrugType drugtype = new DrugType();
        drugtype.setId(id);
        drugtype.setParentId(parent);
        drugtype.setTypeName(typename);
        if (drugtype.getParentId().longValue() == parentid.longValue()) {
            drugtype.setTypeName(" | " + drugtype.getTypeName());
        } else {
            drugtype.setTypeName("----" + drugtype.getTypeName());
        }
        lists.add(drugtype);
    }
    return lists;
}[/code]

HQL中是没有connect by ...start with...函数的。
这是oracle特性函数。
如果你要用,还是使用原生SQL吧。
当然,也有一些映射上途径,供你参考:
[code="java"]http://hi.baidu.com/javazyw/blog/item/37227a3716e104375bb5f5f6.html[/code]
这个依赖的是在JAVA层次上进行遍历。

还有原生SQL,我相信你应该会用吧,不举例了

问题能再描述清楚吗?

首先,在你 List lists = drugTypeBiz.selByHql(hql4); 得到List的方法里面,就应该有个pojo对象,这个对象里面至少有以下三个属性:
Long id
Long parent
String typename

你用的是Hibernate,那么这个pojo就是你这里的DrugType
你在用HQL语句查询出statment的时候,是先将这三个属性的值设置到DrugType 中。因为你这里返回的是集合,所以应该有很多个DrugType 对象。以下是在循环中写:
DrugType drug=new DrugType ();
drug.setId(xx)
drug.setParent();

然后再将 drug加到list中。

然后你在取这三个属性时,应该不止是一组,而是很多组。
取的方法就是
for(int i=0;i<list.size();i++){
DrugType dr=(DrugType )list.get(i);
long id=dr.getId();
long parent=dr.getParent();
.....

}

希望对你有所启发。

看我的博客http://scriptguy.iteye.com/blog/727477,希望对你有帮助