【问题标题】:Specifying columns in jpql select causes casting error在 jpql select 中指定列会导致转换错误
【发布时间】:2010-11-20 23:24:24
【问题描述】:

当我在 jpql/jpa 2.0 查询中指定列时,即select p.id, p.lastName, p.firstName from Profile p where p.group = :group 我收到以下错误:[Ljava.lang.Object; cannot be cast to com.profs.ws.Profile... 有人知道如何解决此转换问题吗?

Profile 实体类本身具有以下类型的属性:String, int, and Collection。我在查询中选择的属性是String 或int 类型。

【问题讨论】:

    标签: java jpa jpql


    【解决方案1】:

    当您指定对象的属性时,JPA 返回Object[] 的列表。您可以将返回值转换为List<Object[] 而不是List<Profile> 以避免ClassCastException。如果您使用 Hibernate 作为 JPA 提供者,您可以将 select 子句映射到一个新对象。有关详细信息,请参阅select clause 文档。

    【讨论】:

    • 我同意,但 JPA 支持任何提供者的“将 select 子句映射到新对象”,而不仅仅是 Hibernate。我认为用于容器类的术语是“构造函数对象”,但我现在不记得了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2011-02-23
    相关资源
    最近更新 更多