此异常仅在Tweet Class使用时发生。我找不到我应该使用的理由Serializable。我自己在中进行了映射GeneticMessage.hbm.xml。Tweet类中的所有类型(long和Date)都是Hibernate中的基本类型(我认为是)。
实际上,仅通过实现Exception中提到的Tweet的Serializable可解决该问题。但是我仍然想知道原因。
方法
域domain =(域)对象[0]; 查询q = session.createQuery(“ FROM PreprocessedMessage WHERE domain =?”); q.setEntity(0,domain); 返回q.list(); //这行
例外:
java.lang.ClassCastException:idv.petrie.prtm.model.Tweet无法转换为java.io.Serializable
org.hibernate.type.CollectionType.getKeyOfOwner(CollectionType.java:381)
org.hibernate.type.CollectionType.resolve(CollectionType.java:425)
org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:139)
org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:982)
org.hibernate.loader.Loader.doQuery(Loader.java:857)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
org.hibernate.loader.Loader.doList(Loader.java:2533)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
org.hibernate.loader.Loader.list(Loader.java:2271)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
idv.petrie.prtm.model.helper.PreprocessedMessageHelper $ 3.execute(PreprocessedMessageHelper.java:66)
idv.petrie.prtm.util.ModelHelper.execute(ModelHelper.java:36)
idv.petrie.prtm.model.helper.PreprocessedMessageHelper.findMessageByDomain(PreprocessedMessageHelper.java:69)
idv.petrie.prtm.servlet.MessageEvaluationServlet.doGet(MessageEvaluationServlet.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
PreprocessedMessage.java
软件包idv.petrie.prtm.model;
导入java.util.Collection;
导入java.util.HashSet;
导入java.util.Set;
公共类PreprocessedMessage扩展了GeneticMessage {
私人GeneticMessage消息;
私有集合依赖项;
专用Set令牌;
公共PreprocessedMessage(){
超();
}
public PreprocessedMessage(GeneticMessage消息,字符串内容){
这个();
this.setMessage(message);
this.setContent(content);
this.setDomain(message.getDomain());
}
public PreprocessedMessage(GeneticMessage消息){
this(message,message.getContent());
}
公共PreprocessedMessage(GeneticMessage消息,
设置依赖项){
这条信息);
this.dependencies =依赖关系;
}
公共静态集合convertToCollection(
收藏邮件){
收集结果= …