我正在使用JPA / JFreeChart来显示我用微控制器收集的数据,但是,我每隔10秒测量14个传感器。我已经测量了超过2个月,我有超过700万套数据。
现在我的实际问题是,因为每次启动程序时我都不想加载7000000行,所以我只想按分钟/小时使用平均值。我曾想过使用NamedQuery,但我不知道如何保持它内部的关系并让JPA使用它,因为到目前为止,JPA本身已经完成了数据的加载。也许我可以通过添加更多注释来解决这个问题?
@OneToMany(mappedBy="sensor")
@OrderBy("timestamp ASC")
public List<Value> getValues() {
return this.values;
}
提前致谢!
最好的问候
答案 0 :(得分:1)
直接JPA不允许过滤结果,因为这意味着实体的关系不再完全反映数据库中的内容,并且必须标准化在将实体添加到非关系时所执行的操作的行为在集合中,但已存在于数据库中。
此映射的最简单方法是将属性标记为@Transient。然后,您可以使用get方法在需要时使用数据库读取值,并根据需要将它们缓存在实体中。
许多提供程序允许向用于引入映射的查询添加过滤器,例如EclipseLink允许在映射上设置@AdditionalCriteria,如下所述:http://wiki.eclipse.org/EclipseLink/Development/AdditionalCriteria或者您可以直接修改映射,如下所示:{{ 3}}