【问题标题】:Spring data throws an exception:" No property [property_name] found for type [Object]!"Spring数据抛出异常:“找不到类型[Object]的属性[property_name]!”
【发布时间】:2016-02-29 15:48:45
【问题描述】:

我希望 Spring Data 接口返回一个非实体对象。

我用谷歌搜索并找到了一个解决方案,我应该使用命名查询并将结果集映射到非实体类。

但是,我确实解决了上述异常。是什么导致了这个异常?

这是我的 sql 结果集映射和命名原生查询的实现:

@SqlResultSetMapping(
        name = "revenue",
        classes = {
                @ConstructorResult(
                        targetClass = Revenue.class,
                        columns = {
                                @ColumnResult(name = "date"),
                                @ColumnResult(name = "revenue")
                        }
                )
        }
)
@NamedNativeQuery(name = "calculateRevenueForGasStationName",
        query = "select fueling.date, fueling.price*fueling.volume as revenue from gas_station " +
                "left join fueling " +
                "on gas_station.id = fueling.gas_station " +
                "where fueling.date between ?1 and ?2 and gas_station.name=?3 " +
                "group by fueling.date",
        resultSetMapping = "revenue")

这里是spring数据接口方法,应该链接到name = "calculateRevenueForGasStationName"

@Query(nativeQuery = true)
List<Revenue> calculateRevenueForGasStationName(Date from, Date to, String name);

【问题讨论】:

  • 你能给我们完整的堆栈跟踪吗?
  • @AliDehghani 它没有帮助。
  • 你试过name = "Revenue.calculateRevenueForGasStationName"

标签: java spring jpa spring-data


【解决方案1】:

你的类属性似乎有问题。您能否重新访问一下您的 Revenue.class 属性详细信息。

请确保 1) “日期”属性已声明为 java.util.Date 2) 收入已宣布为 Double 3)示例代码是

`@SqlResultSetMapping( 
name = "revenue", 
classes = { @ConstructorResult( 
targetClass = Revenue.class, 
columns = { 
@ColumnResult(name = "date", type = java.util.Date.class), 
@ColumnResult(name = "revenue",type = Double.class) 
} ) } )` 

【讨论】:

    猜你喜欢
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2016-07-10
    • 2012-02-17
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多