2011-11-16 95 views
0

請原諒我的壞英語...枚舉 - 數量 - 休眠

在我的數據庫中存儲文章集。在每篇文章中都有幾篇不同的文章。每篇文章對日期和數量都有不同的要求。

在項目有一個枚舉,看起來像這樣:

public enum PeriodDefinition { 
    Individual, 
    Day, 
    Week, 
    Month, 
    Quarter, 
    HalfYear, 
    Year 
} 

條的實體是這樣的:

import java.util.ArrayList; 
import java.util.List; 

import javax.persistence.Entity; 
import javax.persistence.ManyToMany; 

@Entity 
public class Article extends ArticleContainer { 
    private float price; 

    public float getPrice() { 
     return price; 
    } 

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

件容器的實體:

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.OneToOne; 

@Entity 
public class ArticleContainer extends BaseEntity { 

    @Column(nullable = false, unique = true) 
    private String number; 

    @Column(nullable = false) 
    private String name; 

    public String getName() { 
     return name; 
    } 

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


    public String getNumber() { 
     return number; 
    } 

    public void setNumber(String number) { 
     this.number = number; 
    } 

} 

物品組的實體:

import java.util.ArrayList; 
import java.util.List; 

import javax.persistence.Entity; 
import javax.persistence.ManyToMany; 
import javax.persistence.OneToMany; 

@Entity 
public class ArticleSet extends ArticleContainer { 

    private static final long serialVersionUID = 6236522228097421880L; 

    @ManyToMany 
    private List<Article> articles = new ArrayList<Article>(); 

    @OneToMany 
    private List<ArticleSet> children = new ArrayList<ArticleSet>(); 


    public List<Article> getArticles() { 
     return articles; 
    } 

    public void setArticles(List<Article> articles) { 
     this.articles = articles; 
    } 

    public List<ArticleSet> getChildren() { 
     return children; 
    } 

    public void setChildren(List<ArticleSet> children) { 
     this.children = children; 
    } 

} 

最後需求實體

import java.util.Date; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.ManyToOne; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 

@Entity 
public class Demand extends BaseEntity { 
    @ManyToOne(optional = false) 
    private Article article; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(nullable = false) 
    private Date demandTime; 

    private double quantity; 

    public Article getArticle() { 
     return article; 
    } 

    public void setArticle(Article article) { 
     this.article = article; 
    } 

    public Date getTimeStamp() { 
     return demandTime; 
    } 

    public void setTimeStamp(Date demandTime) { 
     this.demandTime = demandTime; 
    } 

    public double getQuantity() { 
     return quantity; 
    } 

    public void setQuantity(double quantity) { 
     this.quantity = quantity; 
    } 

} 

例如存在的一篇文章名爲「ArticleSetOfTwo」和數字002集,其中包含篇「第1條」和「第2條」與數字1和2

第1條具有以下需求:(左是日期和右是量)

  • 2011年7月11日,10
  • 2011年8月11日,50
  • 2011-11-15,200
  • 2011-11-15,300
  • 2011-11-16,100

第2條具有以下需求:

  • 2011年8月11日,20
  • 2011年9月11日,10
  • 2011-11-14,150
  • 2011-11-15,150
  • 2011-11-16,100

現在我要總結所有的數量在物品組由一個時期我們的枚舉,例如劃分周。那麼這將是對Articleset:

第一週開始於2011年7月11日至13-11-2011這將是:90

第二週開始直到2011-11-14 20-11-2011這將是:1000

我想在一個ArrayList中存儲這些值,但我不知道該怎麼做。也許有人可以解決它。非常感謝您提前!

+0

這是一個巨大的問題。您可能會考慮在未來將問題縮小以便人們更容易回答問題。僅供參考。 – Gray

回答

0

我不知道它使用的查詢是可行的。

我只是選擇文章集的所有日期/數量對,按日期排序,然後從開始日期開始並結束於結束日期,然後添加Java中的數量。

的HQL是這樣的:

select d.demandTime, d.quantity from Demand d, ArticleSet set 
inner join set.articles article 
where d.article = article 
order by d.demandTime 

然後,對每個星期,遍歷對和,如果需求時間的開始和週末之間,加入的量需求到周的總和。

+0

嗨, 謝謝你的回答!聽起來不錯! 我想有一種方法,將自動創建它,並得到這樣一個時期的物品容器的需求: http://pastebin.com/PKPWGUc8 \t恐怕我無法編碼,我面對這個問題一個星期...... :(也許你可以幫我實現它? –