首页 > 解决方案 > 使用 JPA 创建和查询表 - 如何返回多行?

问题描述

我想用 Hibernate/JPA 在 MySQL 中创建这样的表。

SENSOR: PK_SENSOR_ID, SENSOR_NAME, SENSOR_URL

SENSOR_DATA: FK_SENSOR_ID, DATE, TIME, VALUE

SENSOR_DATA 将包含来自多个传感器的读数。然后我想要一个使用这个查询的方法:

"SELECT AVG(VALUE), DATE, SENSOR_NAME, FROM SENSOR, SENSOR_DATA WHERE DATE BETWEEN '2019-03-01' AND '2019-03-02' AND SENSOR_ID = FK_SENSOR_ID GROUP BY DATE"

它将返回一个包含每天“值”平均值的数组(带有日期和传感器名称)。

此刻我知道我必须使用@Entity 为 SENSOR 创建一个模型,但是 SENSOR_DATA 呢?

到目前为止,我尝试使用日期、时间和值创建一个简单的模型、存储库和服务,然后对其进行查询,但问题是我只能在一天内获得单行。这样,我将不得不为每一天分别创建很多对象,这是没有意义的。我认为这是因为我使用@Entity并添加了 id,但我无法找到不同的解决方案。我想要的是创建一个Sensor对象,然后通过SENSOR_DATA表查询。

堆栈:Spring Boot、Spring Boot Data JPA Starter、Hibernate、MySQL、Lombok、

标签: javaspring-bootjpaspring-data-jpaspring-data

解决方案


由于我不知道如何使用 JPA 来实现,所以我只使用了 Spring JDBC 并且效果很好。我基于此链接中的示例实现: 链接


推荐阅读