私はフォローしています
https://glassfish.java.net/javaee5/persistence/persistence-example.html
Java SE 環境で JPA をテストします。Eclipse では、次のことを行います。
- 新しい JPA (2.1) プロジェクトを作成しました。
- オプション-> JPA->永続クラス管理で、「注釈付きクラスはpersistence.xmlにリストする必要があります」ではなく、「注釈付きクラスを自動的に検出する」を選択しました。
zip ファイル (Client.java Customer.java Order.java) にあるツリー Java クラスを正常にインポートし、必要に応じて persistence.xml ファイルを変更しました。しかし、main を実行しようとすると、次のエラーが発生します。
[EL Info]: 2013-10-18 17:37:54.749--ServerSession(263489307)--EclipseLink, version: Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5
[EL Info]: connection: 2013-10-18 17:37:55.34--ServerSession(263489307)--file:/home/caterpillar/workspace/JPA_Java_SE/build/classes/_JPA_Java_SE login successful
[EL Warning]: metamodel: 2013-10-18 17:37:55.359--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units. Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element
Exception in thread "main" java.lang.IllegalArgumentException: Object: entity.Customer@5e80188f is not a known entity type.
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4228)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496)
at client.Client.testInsert(Client.java:82)
at client.Client.main(Client.java:49)
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="JPA_Java_SE">
<properties>
<property name="javax.persistence.logging.level" value="FINE"/>
<property name="javax.persistence.logging.thread" value="false"/>
<property name="javax.persistence.logging.session" value="false"/>
<property name="javax.persistence.logging.timestamp" value="false"/>
<property name="javax.persistence.logging.exceptions" value="false"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>
プロジェクト ディレクトリ ツリー:
$ tree
.
├── build
│ └── classes
│ ├── client
│ │ └── Client.class
│ ├── entity
│ │ ├── Customer.class
│ │ └── Order.class
│ └── META-INF
│ └── persistence.xml
├── sql
│ ├── tables_derby.sql
│ └── tables_oracle.sql
└── src
├── client
│ └── Client.java
├── entity
│ ├── Customer.java
│ └── Order.java
└── META-INF
└── persistence.xml
10 directories, 10 files
すべてのクラス コードは、 http ://glassfish.dev.java.net/javaee5/persistence/JPASE.zip で入手できるサンプル ファイルと同一です。