Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA惰性获取自定义查询_Jpa_Annotations - Fatal编程技术网

JPA惰性获取自定义查询

JPA惰性获取自定义查询,jpa,annotations,Jpa,Annotations,我使用JPA/JFreeChart来显示我用微控制器收集的数据,然而,我每10秒测量14个传感器。我已经测量了超过2个月,我有超过7000000套数据 现在,我的实际问题是,因为我不想每次启动程序时都加载7000000行,所以我只想使用分钟/小时的平均值。我曾想过使用NamedQuery,但我不知道如何保持其中的关系并让JPA使用它,因为到目前为止,数据的加载都是由JPA自己完成的。也许我可以通过添加更多注释来解决这个问题 @OneToMany(mappedBy="sensor") @Order

我使用JPA/JFreeChart来显示我用微控制器收集的数据,然而,我每10秒测量14个传感器。我已经测量了超过2个月,我有超过7000000套数据

现在,我的实际问题是,因为我不想每次启动程序时都加载7000000行,所以我只想使用分钟/小时的平均值。我曾想过使用NamedQuery,但我不知道如何保持其中的关系并让JPA使用它,因为到目前为止,数据的加载都是由JPA自己完成的。也许我可以通过添加更多注释来解决这个问题

@OneToMany(mappedBy="sensor")
@OrderBy("timestamp ASC")
public List<Value> getValues() {
    return this.values;
}
@OneToMany(mappedBy=“sensor”)
@OrderBy(“时间戳ASC”)
公共列表getValues(){
返回这个值;
}
提前谢谢


Best问候

Straight JPA不允许过滤结果,因为这意味着实体的关系不再准确反映数据库中的内容,并且它必须标准化将实体添加到关系中时的行为,该关系不在集合中,但已存在于数据库中

不过,这种映射最简单的方法是将属性标记为@Transient。然后,您可以在需要时使用get方法从数据库中读取值,并根据需要将它们缓存在实体中


许多提供者确实允许向用于引入映射的查询添加筛选器,例如EclipseLink允许按此处所述在映射上设置@AdditionalCriteria:或者您可以直接修改映射,如下图所示:

Straight JPA不允许筛选结果,因为这意味着实体的关系不再准确反映数据库中的内容,它必须标准化将实体添加到不在集合中但已存在于数据库中的关系时所执行的操作

不过,这种映射最简单的方法是将属性标记为@Transient。然后,您可以在需要时使用get方法从数据库中读取值,并根据需要将它们缓存在实体中


许多提供者确实允许向用于引入映射的查询添加筛选器,例如EclipseLink允许按此处所述在映射上设置@AdditionalCriteria:或者您可以直接修改映射,如下图所示:

谢谢,现在我正试图通过查询。。我的查询看起来像这样“选择v.id,AVG(v.value)作为值,v.timestamp,v.sensor FROM value v其中v.sensor=:传感器组按日期(v.timestamp),分钟(v.timestamp)顺序按v.timestamp ASC”,但是我得到了一个强制转换错误,因为它们不是持久化中的“真实”值对象谢谢,现在我正试图通过查询。。我的查询看起来像这样“选择v.id,AVG(v.value)作为值,v.timestamp,v.sensor FROM value v其中v.sensor=:传感器组按日期(v.timestamp),分钟(v.timestamp)顺序按v.timestamp ASC”,但是我得到了一个强制转换错误,因为它们不是持久化中的“真实”值对象