java – Spring Data JPA ClassCastException:Integer不能强制转换为Long
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Data JPA ClassCastException:Integer不能强制转换为Long,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1582字,纯文字阅读大概需要3分钟。
内容图文
![java – Spring Data JPA ClassCastException:Integer不能强制转换为Long](/upload/InfoBanner/zyjiaocheng/781/2c60516e9e4c44b8a4bd30377d154750.jpg)
在我的Spring Data应用程序中,我遇到了这里描述的类似问题ClassCastException: Integer cannot be cast to Long, while trying to iterate over entity IDs
这是我的实体:
@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;
...
}
和Spring Data Repository方法:
@Query(value = "SELECT u.user_id FROM users u WHERE u.game_id =:gameId", nativeQuery = true)
List<Long> getGameIds(@Param("gameId") Long gameId);
这将返回Long类型的List但是在执行之后返回整数List并且应用程序失败了
java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Long
如何告诉Spring Data或JPA在结果列表中返回Long(非整数)列表?
我不想在运行时强制转换值(Integer to Long).
另外,我的应用程序的主要标准是性能,所以在我的所有实体中将ID从Long切换到Integer是个好主意吗?在JPA中使用Integer而不是Long来实现实体ID是一种好习惯吗?
更新
我使用PostgreSQL
的情况下:
user_id INTEGER我收到了 – java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Long
user_id BIGINT我收到了 – java.lang.ClassCastException:java.math.BigInteger无法强制转换为java.lang.Long
解决方法:
问题是当您使用本机查询时Long类不与您的数据库类型相关 – getLong在那里不起作用.所以你应该做以下其中一件事
>将db和app中的类型更改为BigInteger(如果整数不足以满足您的需求)
>将db和app中的类型更改为Integer(如果它足以满足您的需求)
>删除nqtiveQuery属性并使用clear JPQL.
内容总结
以上是互联网集市为您收集整理的java – Spring Data JPA ClassCastException:Integer不能强制转换为Long全部内容,希望文章能够帮你解决java – Spring Data JPA ClassCastException:Integer不能强制转换为Long所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。