当前位置: 首页 > 知识库问答 >
问题:

Spring数据JPA ClassCastException:Integer不能强制转换为Long

施俊明
2023-03-14

在我的Spring数据应用程序中,我遇到了这里描述的类似问题ClassCastException:在尝试迭代实体ID时,Integer不能强制转换为Long

@Table(name = "users")
public class User extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 5088960286161030648L;

    @Id
    @SequenceGenerator(name = "users_id_seq", sequenceName = "users_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "users_id_seq")
    private Long id;
...
}
@Query(value = "SELECT u.user_id FROM users u WHERE u.game_id =:gameId", nativeQuery = true)
List<Long> getGameIds(@Param("gameId") Long gameId);

user_id integer我正在接收-java.lang.ClassCastException:java.lang.integer不能强制转换为java.lang.Long

user_id bigint我正在接收-java.lang.ClassCastException:java.Math.bigInteger不能强制转换为java.lang.Long

共有1个答案

索正豪
2023-03-14

问题是当您使用本机查询时long类与您的数据库类型不一致-getLong在那里不起作用。因此您应该执行以下操作之一

  1. 将db和app中的类型更改为BigInteger(如果integer不足以满足您的需要)
  2. 将db和app中的类型更改为Integer(如果满足您的需要)
  3. 删除nqtiveQuery属性并使用clear jpql。
 类似资料: