#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, но у этого класса нет такого поля!