web-dev-qa-db-ja.com

インポートjavax.persistenceを解決できません

現在、EntityManager EntityManagerFacotryとjavax.persistenceパッケージのPersistenceをそれぞれ必要とするプロジェクトに取り組んでいます。データベースサービス用のようですが、現在のコードはあまり文書化されていません。グーグルを検索することで、これに付随するxmlファイルがあるはずのようですが、どちらもありません。私の質問は、単にこれらの未解決のインポートをどのように消すかです。別のjarをビルドパスに追加する必要がありますか? 1.5以来だから、そうする必要はないようだ。

どんな助けも大歓迎です。

27
Matt

hibernate-distribution-3.6.10.Final\lib\jpa:このjarを追加して問題を解決します。 libフォルダーにあり、jpaというフォルダーがあります---> hibernate-jpa-2.0-1.0.1.Final jarがあります

24
Karthik Reddy

はい、おそらく別のjarまたは依存関係を追加する必要があります

javax.persistence.*は、Java Persistence API( [〜#〜] jpa [〜#〜] )の一部です。 JPAには多くの実装があり、この answer はそれぞれの非常に優れた詳細と使用するものを提供します。

javax.persistence.*インポートを解決できない場合、JPAを実装するjarを提供する必要があります。手動でダウンロードする(およびプロジェクトに追加する)か、依存関係管理ツールに宣言を追加する(たとえば、Ivy/Maven/Gradle)ことにより、それを行うことができます。 MavenリポジトリでのEclipseLink実装(リファレンス実装)については、 here を参照してください。

その後、インポートを解決する必要があります。

JPAの概要については、 here も参照してください。参照しているxmlはpersistence.xmlである可能性があります。これはリンクの3ページで説明されています。

言われているのは、間違ったターゲットランタイムを指しているだけかもしれません

正しく思い出せば、JBossのようなJavaEEアプリケーションサーバーにデプロイする場合、JPA実装を提供する必要はありません。 here を参照してください。「Java EE 6アプリケーションサーバー(JBoss AS 6など)でアプリケーションをデプロイする場合、通常は必要ないことに注意してください。例)。」。プロジェクトのターゲットランタイムを変更してみてください。

リモートリポジトリがJavaEEサーバーを想定しているときにローカルプロジェクトがTomcatを指すように設定されている場合、これが当てはまる可能性があります。 TomcatとJBossの違いについては、 here を参照してください。

編集:Tomcatの代わりにGlassFishを指すようにプロジェクトを変更し、javax.persistence.*を明示的なJPA依存関係なしで問題なく解決しました。

20
typoerrpr

誰かがMavenを使用している場合は、POM.XMLファイルに依存関係を追加する必要があります。この投稿の最新バージョンは以下のとおりです。

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>
10
Mindsect Team

私はこの同じ問題にぶつかり、スプリングブートを使用しているので、次の依存関係を追加するだけで問題を解決する必要があることに気付きました。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
6
Dave McLure

私の解決策は、休止状態の依存関係を宣言したpom.xmlで定義したMavenプロファイルを選択することでした。

CTRL + ALT + P Eclipseで。

私のプロジェクトでは、この問題や他の多くの問題を経験していました。なぜなら、私のpomではGlassfish 3、Glassfish 4、WildFlyをサポートするための異なるプロファイルがあるため、コンテナごとに異なるバージョンのHibernateと異なるJavaコンパイルターゲットがあり、など。アクティブなMavenプロファイルを選択すると、問題が解決しました。

1

Spring BootとSpring JPAでgradleを使用している場合は、build.gradleファイルに以下の依存関係を追加します

依存関係{コンパイルグループ: 'org.springframework.boot'、名前: 'spring-boot-starter-data-jpa'、バージョン: '2.1.3.RELEASE'

}

0
Tarun Jain

新しいhibernate jarでは、「hibernate-search-5.8.0.Final\dist\lib\provided\hibernate-jpa-2.1-api-1.0.0.Final」の下に必要なjpaファイルがあります。このjarファイルをプロジェクトに追加する必要がありますJavaビルドパス。これはおそらく問題を解決します。

0
Umesh_Shah

HibernateをJPA実装として使用していて、Maven/Gradleを使用していない場合、jarファイルではなくバンドル全体を1つずつダウンロードする方が簡単です。

http://hibernate.org/orm/downloads/ に移動して最新のライブラリをダウンロードし、requiredフォルダーからjarを抽出します。

0
GMsoF