0

私はAppEngineDatastoreとNoSQLの世界に共通して初めてです。私は、ユーザーが毎日自分の経費を申告できる簡単なアプリケーションを開発しています。すべてのユーザー(アカウント)には、独自の申告経費があります。ダッシュボードには、使用が経費を申告したすべての年を含む単純なGWTセルツリーが含まれています。年をクリックすると、年のすべての月が表示され、月をクリックすると、すべての日が表示されます。その月のそして最後に日をクリックすると、彼はその日に宣言されたすべての費用を受け取ります。こんな感じです

* 2010

|_ jan
 |_1
 |_2
  |_Food 12d 
  |_Dress 200d 
  |_Fun 150d
  |_ ...

|_ feb 
|_ ...

* 2011

| _ jan

|_2月|_..。

すべての経費の親のアカウントとして、各ユーザー(アカウント)の経費エンティティをデータストアに保存します。私の経費は次のとおりです。パブリッククラスの経費はSerializable、Comparableを実装します{

 private String name;
  private double price;
  private Date date;

  public Expense(String name, double price, Date date) {

    this.name = name;
    this.price = price;
    this.date = date;
  }

  public Expense() {
  }

  public String getName() {
    return name;
  }

  public double getPrice() {
    return price;
  }

  public boolean isPriceValid() {
    return price > 0;
  }

  public void setName(String name) {
    this.name = name;
  }

  public void setPrice(double price) {
    this.price = price;
  }

  public Date getDate() {
    return date;
  }

  public void setDate(Date date) {
    this.date = date;
  }

  @Override
  public int compareTo(Expense expense) {
    if (name.equals(expense.getName())) {
      if (date.equals(expense.getDate())) {
        return new Double(price).compareTo(expense.getPrice());
      }
      return date.compareTo(expense.getDate());
    }
    return name.compareTo(expense.getName());
  }

私の質問は次のとおりです。データストアの経費を照会し、指定されたアカウントに関連するすべての異なる年を返し、リストまたはセット、またはそれらをリストできるその他のものに入れる方法は?すべての経費エンティティを取得し、それらを繰り返し処理して、すべての異なる年を取得する必要がありますか?合理的に聞こえません。どんなアドバイスも歓迎し、事前に感謝します。

4

1 に答える 1

1

あなたの投稿に関連するいくつかのコメント:

->私は金額をDoubleとして保存しません。そのルートに行くと、丸め誤差に関する大きな問題が発生します。これにはたくさんの投稿があります。「DollarCent」として保存し、整数として宣言することをお勧めします。保存するときは金額に100を掛け、表示するときは100で割ります。

->データストアでエンティティをSerializableを実装していると宣言するのはなぜですか?Serializableなしで保存します。

->年ごとのデータ表示に関する特定の質問に関連して、あなたの質問を読んで、データを取得する以外の方法はありません。私がすることは、後でデータを注文する必要がないように、GAEにデータを注文するように依頼することです。Objectifyを使用すると、単純にq.filter(...)。order(-date).order(amount)になります。

お役に立てれば !

ヒューグ

于 2012-06-29T06:30:10.737 に答える