此异常仅在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( 收藏邮件){ 收集结果= …