日期:2014-05-18  浏览次数:20584 次

jdo中查询及排序问题
有两个表:
作者表Authors
private   String   authorName;//姓名
private   String   authorPhone;//电话
private   String   authorAddress;//地址
...
书籍表Books
private   String     bookName;//书名
private   double     bookPrice;//价钱
private   Authors   authors;//作者
...
现在我有一个查询方法:
...
jdoql   =   jdoql+   "&&   bookName==_bookName ";
paramNames   =paramNames   + ",String   _bookName ";
params.add(bookName);
...
Query   q   =   Sys.pm().newQuery(Books.class,jdoql);
q.declareParameters(paramNames);
q.setOrdering( "bookPrice   ascending ");
col   =   (Collection)q.executeWithArray(params.toArray());
...
因为jdo中表的主键(id)是自动生成的,所以有几个问题,想请教各位大虾,
给点好的jdo学习资料也行
1.怎么实现子查询或其它多表查询:
select   *   from   books  
where   authorsID   in   (select   authorsID   from   authors  
                                        where   authorName= '张三 ')
2.怎么实现按作者id排序:q.setOrdering( "authorsID   ascending ");
3.当我递增排序的时候为null的总是排在前面,我想把null的排到后面怎么办,我想先列出非null的在列出null的可是,现在是按两个参数排序,所以比较烦,有没有什么好办法?
q.setOrdering( "bookPrice   ascending,bookName   ascending ");

------解决方案--------------------
在google查询了相关资料,感觉和hibernate有类似的功能.感觉用的人不是很多.
------解决方案--------------------
1.多表查询可以直接authors.authorName==**
2.新加记录的时候,给一个创建时间,然后按时间排序
3.最好是添加的时候要毕填