枚举 - 数量 - 休眠

时间:2011-11-16 18:57:20

标签: java hibernate enums

请原谅我糟糕的英语......

在我的数据库中有存储的文章集。在每篇文章集中都有几篇不同的文章。每篇文章都有不同的需求,包括日期和数量。

在项目中有一个枚举,如下所示:

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的文章集,其中包含文章“Article 1”和“Article 2”,编号为1和2.

第1条有以下要求:(左边是日期,右边是数量)

  • 07-11-2011,10
  • 08-11-2011,50
  • 15-11-2011,200
  • 15-11-2011,300
  • 16-11-2011,100

第2条有以下要求:

  • 08-11-2011,20
  • 09-11-2011,10
  • 14-11-2011,150
  • 15-11-2011,150
  • 16-11-2011,100

现在我要将文章集中的所有数量除以我们的枚举时间段,例如:周。那么这将是Articleset:

从2011年11月7日至2011年11月13日开始的第一周,这将是:90

从2011年11月14日至2011年11月20日开始的第二周将是:1000

这些值我想存储在ArrayList中,但我不知道该怎么做。也许有人可以解决它。非常感谢你提前!

1 个答案:

答案 0 :(得分: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

然后,对于每周,循环对,如果需求时间在一周的开始和结束之间,则将需求数量添加到周总和。