论坛首页 Java企业应用论坛

请教: SELECT A1,A2,A3 FROM A, Ax is subclass of A

浏览 4770 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-10-20  
如果 A 有三个以上 subclasses: A1, A2,A3...
我用 "from A" 可以得到他所有的子类,
可是如何在结果集分辨这些子类.

如果可以这样查询: " select A1,A2... from A", 那就很好理解和处理.
我试过,不成功,请教如何做.

不要告诉我:
select A1 from A1
select A2 from A2
...
select Ax from Ax
   发表时间:2003-10-20  
List l=session.find("from A a");;
//List l=session.find("from A a order by a.class");;
for (Iterator iter = l.iterator();; iter.hasNext();; );
    Object o=iter.next();;
    if(o instanceof A1);{
        //...
    }else if(o instanceof A2);{
        //...
    }else{
        //...
    }
}
0 请登录后投票
   发表时间:2003-10-20  
我首先试的就是用instanceof,奇怪的是根本不起作用,应该是我用了proxy,不过我的subclass也设了proxy.
不用instanceof的另外一个原因是每次使用数据集时候都要判断,很麻烦,我还要另外创建List来保存不同的子类。难道不可以一次从结果集里取出各自子集忙?
0 请登录后投票
   发表时间:2003-10-21  
Session.find()或Query.list()是不会返回proxy的,iterator()才会,你用的是哪个?

引用

难道不可以一次从结果集里取出各自子集忙

好像不行,谁知道有这种方法吗(要不自己写一个)?
0 请登录后投票
   发表时间:2003-10-21  
我就是在用iterator.可否对当前表map一个新的class,这个class把这些subclass作为它的children?
0 请登录后投票
   发表时间:2003-10-21  
引用

可否对当前表map一个新的class,这个class把这些subclass作为它的children

不明白你的意思?
贴个例子。
0 请登录后投票
   发表时间:2003-10-21  
我原来是将表映射成一个类和它的子类,我的问题是可不可能将表映射成一个新的类,旧的类的子类分别是这个新类的成员,而且每个成员都是一个collection对象,那样的话,我处理起来就最理想不过了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics