【问题标题】:Enum - Quantity - Hibernate枚举 - 数量 - 休眠
【发布时间】:2011-11-16 18:57:19
【问题描述】:

请原谅我的英语不好...

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

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

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

Article的实体是这样的:

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 的文章“Article 1”和“Article 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 年 7 月 11 日到 2011 年 11 月 13 日的第一周将是:90

从 2011 年 14 月 11 日到 2011 年 11 月 20 日的第二周,它将是:1000

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

【问题讨论】:

  • 这是一个很大的问题。您可能会考虑在将来缩小您的问题,以便人们更容易回答它们。仅供参考。

标签: java hibernate enums


【解决方案1】:

我不确定使用查询是否可行。

我只需选择文章集的所有日期/数量对,按日期排序,然后从开始日期开始循环到结束日期,然后在 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

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

【讨论】:

  • 您好,谢谢您的回答!听起来不错!我正在考虑有一种方法可以自动创建它并在这样的时间段内获取文章容器的需求:pastebin.com/PKPWGUc8 恐怕我无法对其进行编码,我面临着这个问题一个星期...... :(也许你可以帮我实现它?
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
相关资源
最近更新 更多