注釈付きのクラスであるモデルのみを含む 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]
さらにイライラするのは、呼び出しの 2 番目の引数としてクラス 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;
}
}