2012-03-13 13 views
1

私は、カラムweekid,weeknumberおよびweekyearのweekという名前のテーブルを持っています。 開始週が与えられたら、今週までの次の9週間(合計10日間)または次の週を取得したいと考えています。開始オブジェクトから終了オブジェクトまでのデータベース内のオブジェクトをループします

私はこれがあります。

Week weekFirst = weekDao.getWeekByID(20);   
Week weekLast = weekDao.getWeekByID(30); 
List<Week> weekList= new ArrayList<Week>(); 

for(int i=weekFirst.getWeekid(); i<=weekLast.getWeekid();i++){ 
    weekList.add(weekDao.getWeekByID(i)); 
    if(weeksDAO.getWeekByID(i).getWeeknumber() == now.get(Calendar.WEEK_OF_YEAR)){ 
      break;    
} 

しかし、それは代わりに週自体(オブジェクト)の唯一のweekIdを取得原因これはしないだろうが

私は、オブジェクトの週自体を取得し、それを配置する必要がありますこのリストでは、次のweekIdまでに週を追加するのではなく、次週のObjectに従って追加します。

+0

WeekクラスとWeekDaoを共有できますか? – derdc

+0

IDを常に連続させることは悪い考えです。それはDAOがWeekオブジェクトを返すように見えますが、それはあなたが望むように聞こえます。これは機能していないのですか? – kevingallagher

+0

質問をより読みやすくするために、代名詞の一部を削除してください。 "それはそれをしないので動作しません"多くの情報を貸していない。リストを持っている場合は、weekIDだけをリストに追加することはできません。 – ggrigery

答えて

0

あなたの最後のコメントをもとに、あなたのDAOにメソッドを追加することができます。

public List<Week> findAllGreaterThanWeekAndYear(int week, int year) { 
    //order by year, week 
} 

それとも、本当にIDを知っていれば、あなたはDAOのメソッドを追加することができます。そして、

public List<Week> findAllBetween(int idFrom, int idTo) { 
    Week from = get(idFrom); 
    Week to = get(idTo); 
    //select w Week w 
    //where w.yearAndWeek between (from.yearAndWeek,to.yearAndWeek) 
    //order by w.yearAndWeek 
} 

あなた上記のコードは次のようになります。

List<Week> weekList= new ArrayList<Week>(); 
List<Week> weeks = dao.findAllGreaterThanWeekAndYear(...) 
List<Week> weeks = dao.findAllBetween(...) 

for(Week week : weeks){ 
weekList.add(week); 
//TODO: add static getCurrentWeek and override equals 
if(week.equals(Week.getCurrentWeek())){ 
     break;    
} 

使用方法によっては、特殊なDAOメソッドを追加してフィルタリングを行うことができますクエリ。

+0

ありがとうkevinこれは私が必要なものです。あなたを答えとしてマークしました –

0

WeekDao#getWeekByIDは、あなたのDAOでWeekオブジェクト

使用この署名を

public Week getWeekByID(int); 
2

私はあなたの問題を理解していれば、あなたは基本的にあなたのweekDAOオブジェクトがあなたに週オブジェクトを返すされていないと言っているを返す必要があります代わりにWeekオブジェクトのDBからの関連IDです。

コードのあなたの最初のビット:

Week weekFirst - weekDao.getWeekByID(20); 

は「weekDaoは」(それ以外の場合は、コンパイルされないでしょう)週オブジェクトを返す実際にあることを示唆しています。

Weekオブジェクトが戻ってきたら、weekList.addの呼び出しでWeekオブジェクトを追加する必要があります。

関連する問題