Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Postgresql JPQL获取列和now之间的天数差_Postgresql_Hibernate_Spring Boot_Jpql - Fatal编程技术网

Postgresql JPQL获取列和now之间的天数差

Postgresql JPQL获取列和now之间的天数差,postgresql,hibernate,spring-boot,jpql,Postgresql,Hibernate,Spring Boot,Jpql,我在spring引导应用程序中使用hibernate和jpa。 我有一个hibernate实体,有两列,type(字符串)和date(LocalDate) 我想选择所有列以及日期列和现在之间的天数差 我在PostgreSQL中成功:选择日期,从表中选择日期-当前日期 我正在使用一个扩展JpaRepository的接口。到目前为止,我成功地通过@Query注释插入了新的查询。 我不知道如何在jpql中选择我的列和包含日差的列 问候您,不确定您是否可以用jpql实现这一点。 但您可以直接在存储库中将

我在spring引导应用程序中使用hibernate和jpa。 我有一个hibernate实体,有两列,
type
(字符串)和
date
(LocalDate)

我想选择所有列以及日期列和现在之间的天数差

我在PostgreSQL中成功:
选择日期,从表中选择日期-当前日期

我正在使用一个扩展JpaRepository的接口。到目前为止,我成功地通过
@Query
注释插入了新的查询。 我不知道如何在jpql中选择我的列和包含日差的列


问候您,

不确定您是否可以用jpql实现这一点。 但您可以直接在存储库中将查询用作本机查询:

@Query(value=“SELECT…”,nativeQuery=true)
ClassToReturn方法名()


请参见

实际上,您可以使用查询创建者。您必须创建一个新实体,该实体具有与原始表相同的列,此外,还需要计算日期列和now列之间的差异。你必须小心哪一个日期类型是你的列

根据我的经验,只有java.util中的Date可以用于与当前_日期的差异(我可能错了)

公共列表getTest(){
String queryStr=“选择new com.entity.NewEntity(n.type,n.date-当前\u日期为
表中的时间)为n“
TypedQuery query=entityManager.createQuery(queryStr,
新实体类);
return query.getResults()
}

如果只需要选择日期差,为什么不简单地编写一个java方法,返回与当前时间和日期列的差?除了新列,我还需要旧对象,即日期列和现在的差。完整的图片是这样的:我的angular frontend使用hibernate查询spring后端以获得hibernate实体。我想在hibernate实体中添加一个时间列,显示日期列和现在之间的差异。是的,这是我尝试的另一个解决方案,但没有成功。MyClass要返回的是我正在查询的hibernate实体。当我使用我的查询时,我试图在旧对象的基础上返回我的entity+a列。我在这里看到了类似的东西,不知道该怎么做。您的select中不能有一个未映射到实体中的额外列。如果您确实希望实体中有一个不在数据库中的属性,可以在实体中添加一个
@Transient
属性。然后,您可以做的是:在存储库的方法中返回一个
对象[]
(或
列表
),然后手动实例化一个实体类,并根据列手动设置属性。但是你失去了大部分冬眠的好处。它成功了!我创建了一个新的java类TableExtra,它有3列:type、date和time(time是double,日期和当前日期之间的差)。PS:测试成功后,我现在在intellij:psqleexception:type double的错误值:15天;-差异是正确的,15,但直到现在它才返回15,而不是返回15天。我错过了什么?
public List<NewEntity> getTest() {
String queryStr = "select new com.entity.NewEntity(n.type, n.date - CURRENT_DATE as 
time) from Table as n"
TypedQuery<PunteInspectieTimpRamas> query = entityManager.createQuery(queryStr, 
NewEntity.class);

return query.getResults()

}