当我运行此代码时,它给我异常java.lang.ClassCastException:java.util.ArrayList无法强制转换为q1.list()上的java.lang.String;
Query q=session.createQuery("select categoryData FROM SearchHistoryEntity where userId=:u");
q.setInteger("u", userId);
List<String> list1=q.list();
if(list1!=null){
Query q1=session.createQuery("FROM BookEntity where category in (:names) order by bookId");
q1.setParameter("names", list1);
if(q1.list().size()>9){
q1.setFirstResult(1);
q1.setMaxResults(9);
}
list=new ArrayList<BookEntity>();
list=q1.list();
Run Code Online (Sandbox Code Playgroud)
这是完整的堆栈跟踪:
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/BookStore] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String] with root cause
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
at org.hibernate.type.descriptor.java.StringTypeDescriptor.unwrap(StringTypeDescriptor.java:39)
at org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$1.doBind(VarcharTypeDescriptor.java:64)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:286)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:281)
at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:67) …Run Code Online (Sandbox Code Playgroud) 我在暴风雨是新的,并试图了解不同的方法执行从流量spout到bolt.像鲸鱼喷水有不同的方法
nextTuple()
打开()
declareOutputFields()
启用()
关闭()
和bolt有类似的方法
准备()
执行()
清理()
declareOutputFields()
那么有人能告诉我这些方法的执行顺序吗?