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服务
@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);