我有一个 JAR,它只包含我的模型,这些模型是带注释的类。然后是加载 JAR 的应用程序。
在应用程序的 persistence.xml 中,我有:
<jar-file> my jar </jar-file>
在属性中:
<property name="hibernate.archive.autodetection" value="class" />
这样可行。检测到实体并且此查询工作正常:
List<Event> events = em.createQuery(
"from com.my.namespace.model.Event", Event.class).getResultList();
但是我绝对需要在查询中包含命名空间......如果我这样做:
List<Event> events = em.createQuery("from Event", Event.class).getResultList();
然后我得到这个异常:
Event is not mapped [from Event]
更令人沮丧的是,我将类 Event.class 作为调用的第二个参数提供给 JPA。Java 代码导入正确的包。
如何让 JPAQL/HQL “导入”正确的包以查看该实体,而无需显式键入命名空间?
更新:如果有帮助,这里是 Event.java .. 它是微不足道的:
package com.my.namespace.model;
import javax.persistence.*;
@Entity(name="events")
@SequenceGenerator(name="events_id_seq", sequenceName="events_id_seq")
public class Event {
@Id @Column(name="id") @GeneratedValue(generator="events_id_seq")
private Long mId;
@Column(name="title")
private String mTitle;
public Long getId() {
return mId;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
}