我想使用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"
它将返回每天“值”的平均值数组(带有日期和sensor_name)。
现在我知道我必须用@Entity为SENSOR创建一个模型,但SENSOR_DATA呢?
到目前为止,我试图创建一个简单的模型、存储库和服务,其中包含日期、时间和值,然后进行查询,但问题是我一天只能得到一行。这样,我就不得不每天单独创建大量对象,这是没有意义的。我认为这是因为我使用了@Entity
并添加了id,但我无法找到不同的解决方案。我想要的是创建一个传感器
对象,然后通过Sensor_DATA
表进行查询。
堆栈:Spring Boot、Spring Boot Data JPA Starter、HiberNate、MySQL、Lombok、
由于我不知道如何用JPA来做,我就用了Spring JDBC,效果很好。我基于这个链接中的一个示例实现:link
我真的不认为你的sql会因为groupby而起作用。如果我错了,请纠正我。
如果您使用Hibernate和Spring数据jpa。您可以在hql中创建新的Object。
假设映射到SENSOR_DATA的实体是否为 sensorDate。
并且您的传感器对象具有构造函数(双ave、日期、字符串传感器名称)
示例:
@Query("select new path/to/Sensor(avg, date, sensorName)
from sensorDate sd
where sd.date <:fromDate and sd.date > :toDate and sd=:fksd)")
public html" target="_blank">list<Sensor> findSensor(@Param("fromDate")Date fromDate, @Param("toDate")Date toDate, @Param("fksd")SensorDate fksd);
让我解释一下:
当使用new关键字时,hibernate将转换sql的输出并映射到传感器对象和列表。此外,由于您使用的是hibernate,所以最好使用ORM,当比较id时,您可以只比较对象,在内部hibernat会将hql转换为sql并比较它们的pk。
我做了很多假设,但你明白了。只要你能得到你想要的价值,你就可以做一个新的,并将它们传递到你拥有的pojos中。
问题内容: 我正在写一个跨三个表的JPQL查询。在我的结果列表中,我想获得每个匹配行的所有三个实体(希望如此)。 有任何想法吗? Hibernate 3.x是我的JPA提供程序。 问题答案: IIRC,您可以执行,结果将是,其中数组内容将包含o1,o2,o3值。
问题内容: 我开始学习JPA,并已基于我在SQL Server中测试的以下本机SQL实现了JPA查询示例: 通过上面的SQL,我构造了以下JPQL查询: 如您所见,我仍然缺少原始查询中的条件。我的问题是,如何将其放入JPQL? 问题答案: 写这个; 因为您的学生实体与ClassTbl实体具有一对多关系。
问题内容: 我需要在通过JPA EntityManager访问的数据库中创建一个新表。JPA NativeQueries是否支持“选择”或“更新”以外的查询?还是在JPA上下文中还有另一种先进的方法来执行复杂的SQL查询? 问题答案: jpa“本机查询”仅可用于DML语句(数据处理语言)。要发布任何DDL(例如创建表),您需要从EntityManager获取基础连接。 如何从EM中提取连接将取决于
问题内容: 桌子: 我的查询: 我收到“ MySQL子查询返回多个行”错误。 我知道此查询可以使用以下查询的解决方法: 然后使用php循环遍历结果并执行以下查询以获取和回显它: 但是我认为可能会有更好的解决方案? 问题答案: 简单的解决方法是在子查询中添加一个子句: 一个更好的选择(就性能而言)是使用联接:
我有一个奇怪的怪癖,当我运行一个nativeQuery调用单个列中的所有不同值时,我没有得到任何结果。然而,当我从查询中删除“distinct”操作符时,它的工作非常好,告诉我这不是数据库连接或内容问题。 控制器方法: 显然,我可以编写一个“distinct”方法来遍历这个列表,但对我来说,查询不起作用似乎很奇怪 编辑:在备注中请求的存储库和实体类中添加 资源库接口: 创建和修改表的SQL
问题内容: 我有以下四个表: SCHEDULE_REQUEST表: ID,APPLICATION_ID(FK) 应用表: ID,代码 USER_APPLICATION表: APPLICATION_ID(FK),USER_ID(FK) 用户表: ID,NAME 现在,我想创建一个条件条件,以便为指定的用户ID 选择。 我有以下代码: 您能帮我如何将查询过滤器传递给关系对象吗?我认为我在 “ appl