首页 > 解决方案 > java.lang.ClassCastException:java.lang.String 无法转换为 java.lang.Long(休眠)

问题描述

我正在尝试像这样在休眠中运行子查询:-

DetachedCriteria cartProductIds = DetachedCriteria.forClass(UserCart.class,"usercart")
                                        .add(Restrictions.eq("is_deleted", false))
                                        .add(Property.forName("usercart.user_id").eq(Property.forName("search.userId")))
                                        .add(Property.forName("usercart.product_id").eq(Property.forName("search.productId")))
                                        .setProjection(Projections.property("product_id"));

List<SearchHistory> history=session.createCriteria(SearchHistory.class,"search")
                                .add(Restrictions.between("creationTime", startTime, Timings.getCurrentTime()))
                                .add(Restrictions.eq("notification_send", false))
                                .add(Subqueries.notIn("productId", cartProductIds))
                                .list();

但是 notIn 子查询行有一个错误,显示为:-

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long.

需要帮助来解决这个问题。谢谢!

标签: javahibernatedetachedcriteriain-subquery

解决方案


推荐阅读