0

注釈付きのクラスであるモデルのみを含む 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;
    }
}
4

2 に答える 2

2

@Entity(name="events")犯人です

そうでなければならない

          @Entity
          @Table(name="events")

イベントを db テーブル名として意図した場合。eventsそれ以外の場合は、代わりにクエリで使用しますEvent

于 2013-01-04T09:13:21.890 に答える
2

エンティティの名前は (@Entity(name="events") から) 「イベント」であるため、「イベント」ではなく「イベント」から選択する必要があります。

List<Event> events = em.createQuery("from events", Event.class).getResultList();

したがって、動作するはずです

于 2013-01-04T09:13:31.350 に答える