小编use*_*364的帖子

Spring JPA 具有可分页和子查询导致查询语法错误

我有一个 Spring 数据存储库,定义如下:

public interface InvoiceRepository extends JpaRepository<Invoice, Long> {
   @Query(value = "select i.id as id,  " +
            "i.invoiceStatus as invoiceStatus, " +
            "(select sum(r.id) from Invoice r ) as paid " +
            "from Invoice i ")
    Page<InvoiceQuery> getInvoicesByStatusAndName(Pageable pageable);

}
Run Code Online (Sandbox Code Playgroud)

上面给出的子查询不是真正的子查询,但这个简单的查询有助于重现问题。

当我的 springboot(2.4.5) 应用程序启动时,出现以下异常

引起原因:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:期待 EOF,在第 1 行第 62 列附近找到 ')' [从 com.anish.webacc.orm.entities 选择 count(r) .Invoice r ) 从 com.anish.webacc.orm.entities.Invoice i ] 支付,位于 org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) ~[hibernate-core-5.4.30.Final.jar :5.4.30.最终]

现在如果我改变

Page<InvoiceQuery> getInvoicesByStatusAndName(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

List<InvoiceQuery> getInvoicesByStatusAndName(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

然后它就可以完美工作(没有分页部分)。

InvoiceQuery 是一个投影接口 -

public …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-data spring-data-jpa

4
推荐指数
1
解决办法
5900
查看次数

使用POI写日期(没有时间)

当我使用POI写出日期时,我也会在Excel中看到时间.(显示的时间是写入单元格时机器上的时间).这是我用过的代码

XSSFCellStyle dateStyle = wb.createCellStyle();
CreationHelper createHelper = wb.getCreationHelper();
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd-mmm-yyyy"));
Calendar cal = Calendar.getInstance();
cal.set(xx.getYear(), xx.getMonthOfYear(), xx.getDayOfMonth());
cell.setCellStyle(dateStyle);
cell.setCellValue(cal);
Run Code Online (Sandbox Code Playgroud)

单元格中的日期是正确的,即2013年12月12日,但对于该单元格,在公式栏中,时间也会显示.因此,细胞显示2013年12月12日,公式栏显示2013年12月12日上午7:14:39.我检查了excel中单元格的格式,它显示为自定义dd-mm-yyyy,这是我所期望的.太明确了 - 细胞本身显示12-12-2012但是在公式栏中的那个细胞时间也显示出来.我还用日期替换了日历 - 同样的问题.

Addl信息:在excel中我将col的格式更改为'general' - 对于POI添加的单元格,我看到值为xxx.xxx,如41319.3769490278,而当我只是手动输入日期值时看起来像41319.它看起来像小数点后的数字导致时间显示.当我使用POI将其写出来时,不确定如何避免这种情况

excel date apache-poi

2
推荐指数
1
解决办法
1868
查看次数