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>
これはEclipseの癖です。 JPAライブラリ設定を無効にして新しいJPAプロジェクトを作成したとき、まさにこの問題がありましたが、JPAライブラリを手動で設定しませんでしたbefore Eclipseによってエンティティを作成しました新しいJPAエンティティウィザード。エンティティを作成した後、プロジェクトのBuild PathでJPAライブラリを構成しました(ターゲットを追加するだけでJava EEサーバーランタイムをLibraries)にしましたが、検証エラーはまだ残っています。少なくとも次のいずれかの方法で解決できました。
persistence.xml
ファイル、-JPAツール-> クラスリストの同期。これは一貫して再現可能です。 Eclipse Indigo SR1を使用していました。エンティティを作成するときにafter JPAライブラリを設定すると、この検証エラーは発生しません。
JPAプロジェクトを右クリックします
それから
JPAプロバイダークラスが間違っていると思います。次のようにする必要があります。
<provider>org.Eclipse.persistence.jpa.PersistenceProvider</provider>
(あなたが設定したものは、クラスではなく、プロバイダークラスではないようです)
クラスに @ Entity (javax.persistence.Entityから)アノテーションが付けられていることを確認してください
私はそれがOPの問題ではないことを知っていますが、私はそれに捕まって、Googleがここに私を送りました。
Eclipseを使用する場合は、Window>Preference>Validation
およびSuspend all validators
オプション。プロジェクトをクリーンアップすると、問題が解決します。
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>
上記のいずれも機能しませんでした。
EclipseまたはRADで「クラスxxxxはマップされているが、永続性ユニットに含まれていない」エラーを検索している場合:
これらの手順はうまくいきました。
同様のエラーが発生し、Eclipseアーティファクトフォルダー ".settings"が見つからない場合。 「maven-Eclipse-plugin」を使用してEclipseアーティファクトを生成した後、エラーはなくなりました
次のように書かれるべきです:
@Entity
**@Table(name="Address",schema="ABCD")** `
...または、次のように記述できます。
@Entity
public class Address {
}