На самом деле проблему можно решить, просто реализовав Serializable для Tweet, как указано в Исключении. Но я все равно хочу знать причину.
Метод
Домен домен = (Домен) Objects[0];
Query q = session.createQuery("FROM PreprocessedMessage WHERE domain =?");
q.setEntity(0, domain);
return 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 ;
import java.util.Set;
открытый класс PreprocessedMessage расширяет GeneticMessage {
частное сообщение GeneticMessage;
частное Установить зависимости;
частные токены набора;
public PreprocessedMessage() {
super();
public PreprocessedMessage(GeneticMessage message, String content) {
this();
this.setMessage(message);
this.setContent(content);
this.setDomain(message.getDomain()) ;
public PreprocessedMessage(GeneticMessage message) {
this(message, message.getContent());
public PreprocessedMessage(сообщение GeneticMessage,
Установить зависимости) {
this(message);
this.dependents = зависимости;
public static Collection ConvertToCollection(
Сообщения коллекции) {
Результат коллекции = new HashSet();
for (Сообщение GeneticMessage: сообщения) {
result.add(new PreprocessedMessage(message));
вернуть результат;
public void setMessage(GeneticMessage message) {
this.message = message;
public GeneticMessage getMessage() {
возвращаемое сообщение;
public Set getDependities() {
возвращаемые зависимости;
public void setDependities(Set dependency) {
for (Dependency d : Dependency) {
d.setMessage(this);
this .dependents = зависимости;
}
public Collection getTokens() {
возвращаем токены;
public void setTokens(Set tokens(Set tokens) ) {
for (Token t : токены) {
t.setMessage(this);
this.tokens = токены;
Tweet.java
пакет idv.petrie. prtm.model;
import java.util.Date;
публичный класс Tweet расширяет GeneticMessage {
частный длинный твиттер;
частная дата создания;
частная long fromUserId;
public Tweet() {
super();
public Tweet(String content) {
this();
setContent(content);
public Date getCreatedAt() {
return созданныйAt;
public void setCreatedAt(Date createAt) {
this.createdAt = созданныйAt;
public long getFromUserId () {
return fromUserId;
}
public void setFromUserId(long fromUserId) {
this.fromUserId = fromUserId;
public void setTweetId(longtwitterId) {
this.tweetId =twitterId;
public long getTweetId() {
returntwitterId;
GeneticMessage.java
пакет idv.petrie.prtm.model;
import java.util.Date;
публичный класс GeneticMessage реализует Comparable {
public enum Status {
НОВЫЙ (0), PREPROCESSED (1);
частный int id;
частный Status (int id) {
this. id = id;
public int getId() {
return id;
Private long id;
частное Дата изменения;
частное строковое содержимое;
частное состояние статуса;
частный домен домена;
public GeneticMessage() {
setModifiedAt();
setStatus(Status.NEW);
public long getId() {
возвращаемый идентификатор;
}
public void setId(long id) {
this.id = id;
}
public String getContent() {
возвращает содержимое;
public void setContent(String content) {
this.content = content;
public void setModifiedAt() {
this.modifiedAt = new Date();
public Date getModifiedAt() {
returnmodifiedAt;
public void setStatus(Status status) {
this.status = status;
public Status getStatus() {
возвращает статус;
public void setDomain(Домен домена) {
this.domain = домен;
public Domain getDomain() {
возвращает домен;
public int CompareTo(GeneticMessage o) {
String content = this.getContent( );
String anotherContent = o.getContent();
return content.compareTo(anotherContent);
public void setModifiedAt(Date ModifiedAt) {
/> this.modifiedAt = модифицированныйAt;
}
GeneticMessage.hbm.xml
Код: Выделить всё
idv.petrie.prtm.model.GeneticMessage.Status
getId
Подробнее здесь: https://stackoverflow.com/questions/491 ... -hibernate