2013-05-18 1 views
0

Я использую следующий код JPA с БД MySQL и OpenJPA 2.2.2:OpenJPA Enhance - поле идентификации, определенное в {0} Встраиваемый не поддерживается

@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 среде:

ОШИБКА [Основной] openjpa.Enhance - поле идентификации, определенного в IdentifiableEntity Встраиваемый не поддерживается.

Я попробовал работать с динамически загруженным энтузиастом OpenJPA на Oracle 1.6 JDK. Код, кажется, выполняется правильно, несмотря на сообщение.

Почему я получаю это сообщение? Является ли это доброкачественным?

Вот содержание 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&amp;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> 
+0

У вас есть @Embeddable аннотации где-нибудь? Сообщение об ошибке кажется, что вы это делаете. – Templar

+0

Нет примечания 'Embeddable'. Я предполагаю, что 'Embeddable' подразумевается, потому что я использую' MappedSuperclass'. –

+0

Можете ли вы разместить содержимое вашего persistence.xml, и есть ли исключение, зарегистрированное в ERROR? – Rick

ответ

0

Имеют ту же самую ошибку. После некоторой отладки я узнал, что строки, которые распечатывают это, из патча для: OPENJPA-2233. Он также изменяет условие для добавления pcNewObjectIdInstance, но не влияет на объекты MappedSuperclass.

Думаю, мы не должны беспокоиться. Я создам проблему на apache JIRA.

+1

Можете ли вы предоставить ссылку на вопрос JIRA? –

+1

Более года спустя я случайно нашел этот комментарий (никогда не получал уведомления), но проблема все еще открыта, поэтому я дам вам ссылку: [OPENJPA-2396] (https://issues.apache.org/jira/просмотр/OpenJPA-2396). –

0

Такая же проблема с OpenJpa 2.2.2.

Его что-то связано с persistence.xml - когда я улучшаю свои объекты с помощью persistence.xml, настроенного для HSqlDb, тогда все работает. Когда я использую persistence.xml, настроенный для MySql Cluster, он бомбит эту ошибку. Таким образом, кажется, что что-то в persistence.xml запускает другой путь в коде во время улучшения, который просто не работает.

Вернется и прокомментирует, если я придумаю что-нибудь полезное.

Моих persistence.xml с обеими конфигурациями

<?xml version="1.0"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> 
    <persistence-unit name="testdb" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
    <class>code.TestDataBean</class> 
    <class>code.shared.DataBean</class> 
    <class>code.shared.AbstractDataBean</class> 
    <properties> 
     <!-- HSqlDb --> 
     <!-- 
     <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> 
     <property name="openjpa.ConnectionURL" value="jdbc:hsqldb:testdb" /> 
     <property name="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver" /> 
     <property name="openjpa.ConnectionUserName" value="sa" /> 
     <property name="openjpa.ConnectionPassword" value="" /> 
     <property name="openjpa.Log" value="DefaultLevel=TRACE" /> 
     --> 
     <!-- MySql Cluster port 5000 --> 
     <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> 
     <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" /> 
     <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:5000/clusterdb" /> 
     <property name="openjpa.ConnectionUserName" value="root" /> 
     <property name="openjpa.ConnectionPassword" value="" /> 
     <property name="openjpa.BrokerFactory" value="ndb" /> 
     <property name="openjpa.jdbc.DBDictionary" value="TableType=ndb"/> 
     <property name="openjpa.ndb.connectString" value="localhost:1186" /> 
     <property name="openjpa.ndb.database" value="clusterdb" /> 
     <property name="openjpa.Log" value="DefaultLevel=TRACE" /> 
    </properties> 
    </persistence-unit> 
</persistence> 
+0

Вы упомянули, что код работает безотносительно. Я получил ошибку при расширении, но запуск процесса снова говорит мне, что сущности уже были улучшены. Поэтому не кажется, что ошибка прерывает весь процесс улучшения. –

+0

Моя последующая работа, но еще не решена и, вероятно, больше кластера MySql, чем ваша проблема: https://issues.apache.org/jira/browse/OPENJPA-2407 –

 Смежные вопросы

  • Нет связанных вопросов^_^