Исключение WrongClassException переключение с eclipselink на гибернацию

#hibernate #exception #jpa #limit

#спящий режим #исключение #jpa #предел #ограничение

Вопрос:

У меня был рабочий код, написанный на чистом JPA и работающий на Glassfish версии v3.0.1 (eclipselink) Я решил переключить поставщика сохраняемости на hbernate 3.5.1-final, и я сталкиваюсь с исключениями в одном запросе, который работал раньше.
Все остальные запросы (именованные запросы) работают нормально. Может кто-нибудь сказать мне, что не так с приведенным ниже? Я не могу сделать это именованным запросом, потому что мне нужно отсортировать задание по разным параметрам.
Почему не запрашиваются коллекции внутри класса Job?
Спасибо за любую помощь

javax.постоянство.Исключение PersistenceException: org.hibernate.Исключение WrongClassException: объект с идентификатором: 16 не принадлежал к указанному подклассу: mypackage.Задание (дискриминатор: )

Спящий режим:

выберите job0_.id как id7_, job0_.version как version7_, job0_.created как creat ed7_, job0_.error_msg как error5_7_, job0_.priority как priority7_, job0_.retries как retries7_, job0_.status как status7_, job0_.subject как subject7_, job0_.user_id как user10_7_, job0_.DTYPE как DTYPE7_ из test_job job0_, где job0_.user_id=? порядок по job0_.созданному ограничению на снижение?

Список foo;

 Строка qst = " ВЫБЕРИТЕ e из задания e, ГДЕ e.user = :пользователь";

 qst  = "ПОРЯДОК По e."   OrderBy;
 Запрос q = em.CreateQuery(qst); //TypedQuery  Список 
 вопрос.setParameter("пользователь", user);

 вопрос.setMaxResults(длина);
 вопрос.setFirstResult(запуск);
 foo = q.getResultList();

Классы:

@Сущность
@Таблица
@NamedQueries{Запросы с именами}
Задание расширяет базовую ценность{
...
@ManyToMany(выборка = FetchType.НЕТЕРПЕЛИВЫЙ)
 @JoinTable(имя = "job_address", 
 joinColumns = @JoinColumn(имя = "job_id"), 
 inverseJoinColumns = @JoinColumn(имя = "address_id"))
 @NotNull 
 защищенный набор FtpAddress> адреса;

 @OneToMany(выборка = FetchType.НЕТЕРПЕЛИВЫЙ, каскад = CascadeType.ALL)
 @JoinTable(name = "job_transmission", 
 joinColumns = @JoinColumn(имя = "job_id"), 
 inverseJoinColumns = @JoinColumn(имя = "transmission_id"))
 защищенный набор передач> передачи; 
}

@MappedSuperclass BaseEntity{
 идентификатор int 
 версия int ....
}

Комментарии:

1. Есть ли у Job какие-либо подклассы? — Потому что для таких вещей используется дискриминатор.

2. Ни одно задание не имеет подклассов. У меня есть другие классы, которые наследуются от BaseEntity и persistence для них. Задание имеет 2 переходных свойства, которых нет у других классов. Имеет ли это какое-либо значение?

3. BaseEntity — это MappedSuperclass , поэтому hibernate должен рассматривать свои подклассы как совершенно разные.

Ответ №1:

Что-то совершенно неправильно: запрос: "SELECT e from Job e WHERE e.user = :user " попытался бы получить доступ к полю «user» класса Job, но у этого класса нет такого поля!