Spring Data JPA本机查询结果绑定

时间:2017-07-09 23:41:43

标签: spring jpa spring-data-jpa

实体类:

@Entity
@SqlResultSetMapping(
    name="hourMapping",
    classes=@ConstructorResult(
            targetClass=Representation.class,
            columns={
                    @ColumnResult(name="hour", type=BigDecimal.class),
                    @ColumnResult(name="transactions", type=BigDecimal.class)
            }
            )
    )

@NamedNativeQuery(name="MyEntity.reportByHour", query="SELECT hour,SUM(tran_per_hour) AS transactions FROM MY_ENTITY GROUP BY hour ORDER BY hour"
    ,resultSetMapping="hourMapping")

@Table(name="MY_ENTITY")
public class MyEntity implements Serializable {

Pojo课程:

@Data //Lombok
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
public class Representation {

public Representation(BigDecimal hour, BigDecimal transactions) {
    this.hour = hour;
    this.transactions = transactions;
}

private BigDecimal hour;
private BigDecimal transactions;

存储库界面:

public interface MyEntityRepository extends JpaRepository<MyEntity, MyEntityPK> {
    List<Representation> reportByHour();
}

当我运行调用本机查询的端点时,我得到异常:

  

无法从类型[java.lang.Object []]转换为类型[com.representation.Representation]以输入值&#39; {0,198}&#39 ;;嵌套异常是org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型[java.math.BigDecimal]转换为[com.representation.Representation]类型的转换器

现在,如果我只是&#34;小时&#34;从我的本机查询返回的字段(以及对POJO构造函数的相关更改等)它工作正常。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

好的,误报。我的hibernate依赖项都搞砸了并导致冲突,从而导致上述异常。

修复这些依赖性问题后,效果很好!!

长话短说:让spring-boot- *处理大多数hibernate依赖,而不是覆盖或管理自己的。