在我的数据库中有存储的文章集。在每篇文章集中都有几篇不同的文章。每篇文章都有不同的需求,包括日期和数量。
在项目中有一个枚举,如下所示:
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条有以下要求:(左边是日期,右边是数量)
第2条有以下要求:
现在我要将文章集中的所有数量除以我们的枚举时间段,例如:周。那么这将是Articleset:
从2011年11月7日至2011年11月13日开始的第一周,这将是:90
从2011年11月14日至2011年11月20日开始的第二周将是:1000
这些值我想存储在ArrayList中,但我不知道该怎么做。也许有人可以解决它。非常感谢你提前!
答案 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
然后,对于每周,循环对,如果需求时间在一周的开始和结束之间,则将需求数量添加到周总和。