Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Spring 使用@SqlResultMapping和@ConstructorResult将对象转换为NamedNativeQuery时出错_Spring_Hibernate_Jpa_Spring Data Jpa_Jpa 2.1 - Fatal编程技术网

Spring 使用@SqlResultMapping和@ConstructorResult将对象转换为NamedNativeQuery时出错

Spring 使用@SqlResultMapping和@ConstructorResult将对象转换为NamedNativeQuery时出错,spring,hibernate,jpa,spring-data-jpa,jpa-2.1,Spring,Hibernate,Jpa,Spring Data Jpa,Jpa 2.1,伙计们 我已经面对这个问题一天了,但我找不到解决办法 我有这样一个场景: 弹簧靴 JPA 2.1 冬眠 我正在使用存储库 该应用程序是一个JSON REST服务 代码my entity Ticket.java: @Entity @Table(name = "tickets") @SqlResultSetMapping( name="SummaryReport", classes=@ConstructorResult( targetClass=Valid

伙计们

我已经面对这个问题一天了,但我找不到解决办法

我有这样一个场景:

  • 弹簧靴
  • JPA 2.1
  • 冬眠
  • 我正在使用存储库
  • 该应用程序是一个JSON REST服务
代码my entity Ticket.java:

@Entity
@Table(name = "tickets")
@SqlResultSetMapping(
    name="SummaryReport",
    classes=@ConstructorResult(
            targetClass=ValidatedTicketsVO.class,
            columns={@ColumnResult(name="quantity", 
                                   type=BigInteger.class),
                     @ColumnResult(name="quarter", type=String.class)
            }))
@NamedNativeQuery(
    name="Ticket.findShowSummaryReport",
    query="SELECT COUNT(*) AS quantity, DATE_FORMAT( FROM_UNIXTIME(UNIX_TIMESTAMP(validation_time) - UNIX_TIMESTAMP(validation_time)%(15*60)), \"%d/%m/%Y %H:%i\" ) AS quarter " +
      " FROM tickets " +
      " WHERE show_id = :showId " +
      " GROUP BY quarter " +
      " ORDER BY quarter ")
public class Ticket implements Serializable {
我还尝试使用@EntityResult而不是@ConstructorResult:

@SqlResultSetMapping(
    name="SummaryReport",
    entities=@EntityResult(
            entityClass=ValidatedTicketsVO.class,
            fields={@FieldResult(name="quantity", column="quantity"),
                     @FieldResult(name="quarter", column="quarter")
            }))
但我也犯了同样的错误

以及查询结果必须映射到的我的POJO/VO类:

import java.math.BigInteger;

public class ValidatedTicketsVO {

private BigInteger quantity;
private String quarter;

public ValidatedTicketsVO(BigInteger quantity, String timeQuarter) {
    super();
    this.quantity = quantity;
    this.quarter = timeQuarter;
}

[ getters and setters ]

}
PS:字段数量最初定义为整数,但当我遇到[java.math.biginger]异常时,我将其改为Long,现在改为biginger,以查看它是否解决了我的问题,但仍然是一样的

下面是我的存储库方法:

List<ValidatedTicketsVO> findShowSummaryReport(@Param("showId") Long showId);
}

在Eclipse上调试时,调用此方法时会发生异常:

List<ValidatedTicketsVO> list = repository.findShowSummaryReport(showId);
List List=repository.findShowSummaryReport(showId);

有人能帮我吗?

Hibernate/JPA可能需要一个用于BigInteger的自定义类型转换器。尝试使用Integer,看看是否有效。如果确实如此,那么为biginteger编写一个自定义类型转换器。谢谢@sagneta。我已经试过Integer和Long,但我得到了相同的错误。你有创建自定义类型转换器的例子吗?有很多教程。
List<ValidatedTicketsVO> list = repository.findShowSummaryReport(showId);