java - 使用 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、
解决方案
由于我不知道如何使用 JPA 来实现,所以我只使用了 Spring JDBC 并且效果很好。我基于此链接中的示例实现: 链接
推荐阅读
- java - 无法使用 Hibernate 连接到数据库
- javascript - 如何在wordpress中使用ajax在数据库中插入图像
- android - 我可以使用 32 位操作系统虚拟化,但不能使用 Android Studio
- java - Spring Boot 应用程序在 CentOS 7 x64 中产生了许多轻量级进程
- katalon-studio - 如何使用带有参数的 Katalon Recorder
- android - 如何根据模拟中传递的参数从同一函数返回两个不同的模拟?
- aframe - 在 A-Frame 中集成为 2D 元素的交互式 HTML
- oauth-2.0 - 为什么在本机应用程序中使用 PKCE 保护授权代码?之后是什么保护访问令牌?
- node.js - 存根nodejs proxyquire返回错误:TypeError:无法读取未定义的属性'url'
- r - 在管道运算符中重新编码字符变量