У меня был рабочий код, написанный на чистом JPA и работающий на Glassfish v3.0.1 (eclipselink). Я решил переключить поставщика сохраняемости на hbernate 3.5.1-final, и у меня возникают исключения в одном запросе, который работал раньше.
Все остальные запросы (именованные запросы) работают нормально.Может кто-нибудь сказать мне, что не так с приведенным ниже?Я не могу сделать это именованным запросом, потому что мне нужно отсортировать работу по другим параметрам.
Почему коллекции внутри класса Job не запрашиваются?
Спасибо за любую помощь
javax.persistence.PersistenceException: org.hibernate.WrongClassException: Объект с id: 16 не принадлежит указанному подклассу: mypackage.Job (Discriminator:)
Hibernate:
выберите job0_.id как id7_, job0_.version как version7_, job0_.create как созданный 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_.created предел DESC?
List foo;
String qst = " SELECT e from Job e WHERE e.user = :user ";
qst += " ORDER BY e." + orderBy;
Query q = em.createQuery(qst); //TypedQuery +List
q.setParameter("user", user);
q.setMaxResults(length);
q.setFirstResult(start);
foo = q.getResultList();
Классы:
@Entity
@Table
@NamedQueries{}
Job extends BaseEntity{
...
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "job_address",
joinColumns = @JoinColumn(name = "job_id"),
inverseJoinColumns = @JoinColumn(name = "address_id"))
@NotNull
protected Set FtpAddress> addresses;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "job_transmission",
joinColumns = @JoinColumn(name = "job_id"),
inverseJoinColumns = @JoinColumn(name = "transmission_id"))
protected Set Transmission> transmissions;
}
@MappedSuperclass BaseEntity{
int id
int version ....
}