У меня странное поведение с JPA / hibernate.
У меня есть 3 сущности, расположенные в 2 JAR:
Заказ (из JAR A):
@Entity
public class Order implements Serializable {
@Id
private Long id;
@OneToOne(mappedBy="parentOrder", cascade=CascadeType.ALL)
private OrderProduction production;
}
OrderProduction (из JAR A):
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class OrderProduction implements Serializable {
@Id
@Column(name="order_id", insertable=false, updatable=false)
private Long id;
@OneToOne
@JoinColumn(name="order_id", nullable=false)
private Order parentOrder;
}
OrderProductionImpl (из JAR B):
@Entity
@Table(name="production_order")
public class OrderProductionImpl extends OrderProduction implements Serializable {
@Temporal(TemporalType.TIMESTAMP)
private Date creationDateTime;
}
Это прекрасно работает с EclipseLink (Glassfish 3.0), но с Hibernate(JBoss 6), я получаю:
javax.persistence.PersistenceException: [PersistenceUnit: testPU] Unable to configure EntityManagerFactory
Caused by: java.lang.ClassCastException: org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass
Но если положить все объекты в один и тот же файл JAR, это нормально с Hibernate.
Я получаю тот же результат в модульном тестировании или приложенииразвертывание сервера.
Как я могу хранить свои сущности в отдельных файлах JAR, используя hibernate?
- [Редактировать] Точность: другие сущности из JAR B успешно сопоставлены.
- [Редактировать] Может быть проблема с загрузчиком классов в Hibernate?