web-dev-qa-db-ja.com

クラス「model.Address」はpersistence.xmlファイルにリストされていますが、マッピングされていません

JPAプロジェクトを作成しました。そのEclipseでは、エンティティクラスに次のエラーが表示されます。

クラス「model.Address」はpersistence.xmlファイルにリストされていますが、マッピングされていません

persistance.xmlのエンティティクラスをどのようにマップするのですか?

model.Addressエンティティは次のとおりです。

package model;

import Java.io.Serializable;

import javax.persistence.*;

@Entity
public class Address implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;
    private String city;
    private String country;
    private String province;
    private String postalCode;
    private String street;

    // Getters/setters omitted for brevity.
}

persistence.xmlは次のとおりです。

<?xml version="1.0" encoding="UTF-8" ?>
<persistence 
    xmlns="http://Java.Sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence http://Java.Sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" 
>
    <provider>org.Eclipse.persistance.example.jpa.20.employee.annotations</provider>

    <persistence-unit name="employee" transaction-type="RESOURCE_LOCAL">
        <class>model.Employee</class>
        <class>model.Address</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="Oracle.jdbc.OracleDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:Oracle:thin:@localhost:1521:orcl" />
            <property name="javax.persistence.jdbc.user" value="scott" />
            <property name="javax.persistence.jdbc.password" value="tiger" />
        </properties>
    </persistence-unit>
</persistence>
30
user246160

これはEclipseの癖です。 JPAライブラリ設定を無効にして新しいJPAプロジェクトを作成したとき、まさにこの問題がありましたが、JPAライブラリを手動で設定しませんでしたbefore Eclipseによってエンティティを作成しました新しいJPAエンティティウィザード。エンティティを作成した後、プロジェクトのBuild PathでJPAライブラリを構成しました(ターゲットを追加するだけでJava EEサーバーランタイムをLibraries)にしましたが、検証エラーはまだ残っています。少なくとも次のいずれかの方法で解決できました。

  1. 右クリック persistence.xmlファイル、-JPAツール-> クラスリストの同期
  2. または、プロジェクト、検証を右クリックします。
  3. または、プロジェクトを閉じる/再開します。

これは一貫して再現可能です。 Eclipse Indigo SR1を使用していました。エンティティを作成するときにafter JPAライブラリを設定すると、この検証エラーは発生しません。

101
BalusC

JPAプロジェクトを右クリックします

それから

enter image description here

9
H. ELKINA

JPAプロバイダークラスが間違っていると思います。次のようにする必要があります。

<provider>org.Eclipse.persistence.jpa.PersistenceProvider</provider>

(あなたが設定したものは、クラスではなく、プロバイダークラスではないようです)

6
Bozho

クラスに @ Entity (javax.persistence.Entityから)アノテーションが付けられていることを確認してください

私はそれがOPの問題ではないことを知っていますが、私はそれに捕まって、Googleがここに私を送りました。

5
olafure

Eclipseを使用する場合は、Window>Preference>ValidationおよびSuspend all validatorsオプション。プロジェクトをクリーンアップすると、問題が解決します。

3
Rahul Juluru

JPAの永続性ファイルとORMマッピングファイルを作成する必要があります。永続性ファイルからマッピングファイルを参照します。

<persistence-unit name="persistenceUnit"
    transaction-type="RESOURCE_LOCAL">
    <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
    <mapping-file>META-INF/hbase-orm.xml</mapping-file>
    <class>com.xxx.logcollector.entity.DefaultLogableEntity</class>
    <properties>
        <property name="datanucleus.jpa.addClassTransformer" value="false" />
        <property name="datanucleus.managedRuntime" value="false" />

....

ORMマッピングファイルを作成する

<entity-mappings xmlns="http://Java.Sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence/orm http://Java.Sun.com/xml/ns/persistence/orm_1_0.xsd"
    version="1.0">
    <entity class="com.xxx.cne.logcollector.entity.DefaultLogableEntity"
        name="DefaultLogableEntity">
        <table name="RAW_LOG_COLLECTION" />
        <attributes>
            <id name="clientHostIP">
                <column name="ANALYTICS:CLIENT_IP" />
            </id>
            <basic name="requestDateTime">
                <column name="ANALYTICS:REQUEST_DATETIME" />
            </basic>

...

春にエンティティマネージャーを作成する

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="persistenceUnit"></property>
3
Pratik Guha Ray

上記のいずれも機能しませんでした。

EclipseまたはRADで「クラスxxxxはマップされているが、永続性ユニットに含まれていない」エラーを検索している場合:

  1. プロジェクトを右クリックして、プロパティを選択します。
  2. JPAを選択
  3. 「注釈付きクラスを自動的に検出する」ラジオボタンを選択します
  4. OKをクリックして、プロジェクトの構築が完了するのを待ちます。

これらの手順はうまくいきました。

3
Joe Tony Tagore

同様のエラーが発生し、Eclipseアーティファクトフォルダー ".settings"が見つからない場合。 「maven-Eclipse-plugin」を使用してEclipseアーティファクトを生成した後、エラーはなくなりました

2
Venkat Keesara

次のように書かれるべきです:

@Entity
**@Table(name="Address",schema="ABCD")** `

...または、次のように記述できます。

@Entity
public class Address {

} 
2
Sumatrin