2011-11-16 65 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恐怕我无法编码,我面对这个问题一个星期...... :(也许你可以帮我实现它? –