MySQL DB と OpenJPA 2.2.2 で次の JPA コードを使用しています。
@MappedSuperclass
public abstract class IdentifiableEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
// getters, setters, etc.
}
@Entity
public class User extends IdentifiableEntity {
private String name;
// getters, setters, etc.
}
User user = new User();
JSE 環境で実行すると、次のメッセージが表示されます。
エラー [main] openjpa.Enhance - IdentifiableEntity Embeddable で定義された ID フィールドはサポートされていません。
Oracle 1.6 JDK で OpenJPA 動的ロード クラス エンハンサーを実行してみました。メッセージにもかかわらず、コードは正しく実行されているようです。
このメッセージが表示されるのはなぜですか? 良性ですか?
の内容は次の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" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<properties>
<property name="openjpa.ConnectionURL"
value="jdbc:mysql://localhost:3306/playground?useUnicode=true&characterEncoding=UTF-8"/>
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionUserName" value="guest"/>
<property name="openjpa.ConnectionPassword" value="guest"/>
<!-- Classes should be enhanced at build-time for production. -->
<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>
<property name="openjpa.DynamicEnhancementAgent" value="true"/>
<!-- Enable logging -->
<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE" />
<property name="openjpa.ConnectionFactoryProperties" value="PrintParameters=true" />
</properties>
</persistence-unit>
</persistence>