2009-11-02 6 views
0

Я немного смущен странным поведением связанных объектов JPA. У меня есть три пучка:JPA Entity (в нескольких единицах сохранения) в OSGi (Spring DM) Окружение меня смущает

Пользователь расслоение содержат некоторые пользовательские связанные объекты, но в основном User объект.

Энергетический пакет содержит некоторые связанные с энергией объекты, в частности ConsumptionTerminal, который содержит список пользователей.

Индексный пакет содержит объект Index, который не имеет никакой зависимости.

среда Моего OSGi заключается в следующем:

  • A DataSource расслоения, которые обеспечивают 2 услуги: DataSource и jpaVendorAdapter.

  • Три связки. Они потребляют dataSource и jpaVendorAdapter.

    Их module-context.xml файл выглядит следующим образом:

    И все они имеют persistence.xml файл:

    • пользователя

      <?xml version="1.0" encoding="UTF-8"?> 
      <persistence> 
          <persistence-unit name="securityPU" transaction-type="JTA"> 
           <jta-data-source>java:/securityDataSourceService</jta-data-source> 
           <class>net.nextep.amundsen.security.domain.User</class> 
           <!-- [...] --> 
           <exclude-unlisted-classes>true</exclude-unlisted-classes> 
           <properties> 
            <property name="eclipselink.logging.level" value="INFO" /> 
            <property name="eclipselink.ddl-generation" value="create-tables" /> 
            <property name="eclipselink.ddl-generation.output-mode" value="database" /> 
            <property name="eclipselink.orm.throw.exceptions" value="true" /> 
           </properties> 
          </persistence-unit> 
      </persistence> 
      
    • Energy Index

      <?xml version="1.0" encoding="UTF-8"?> 
      <persistence> 
          <persistence-unit name="energyPU" transaction-type="JTA"> 
           <jta-data-source>java:/securityDataSourceService</jta-data-source> 
           <class>net.nextep.amundsen.security.domain.User</class> 
           <class>net.nextep.amundsen.energy.domain.User</class> 
           <!-- [...] --> 
           <exclude-unlisted-classes>true</exclude-unlisted-classes> 
           <properties> 
            <property name="eclipselink.logging.level" value="INFO" /> 
            <property name="eclipselink.ddl-generation" value="create-tables" /> 
            <property name="eclipselink.ddl-generation.output-mode" value="database" /> 
            <property name="eclipselink.orm.throw.exceptions" value="true" /> 
           </properties> 
          </persistence-unit> 
      </persistence> 
      
    • : Это один имеет самый простой persistence.xml с помощью всего класса Index (не общий класс).

Я использую по имени @PersistenceUnit аннотацию, как @PersitenceUnit(name = 'securityPU') (для пучка пользователя).

И, наконец, я использую EclipseLink в качестве поставщика JPA и Spring DM (+ Spring DM Server, в процессе разработки)

Проблема заключается в следующем:

  1. Когда пакет пользователя развернут , Я могу сохранить объекты User.
  2. Когда развертываются пакеты User bundle и Energy bundles, я не могу сохранять объекты User (ни объект Energy).Но у меня нет никаких исключений вообще!
  3. Нет проблем с комплектом индексов.

Ошибка является независимой от dataSource (я пытался использовать PostgreSQL и MySQL до сих пор).

Моим первым выводом было то, что <class>net.nextep.amundsen.security.domain.User</class> в обоих устройствах настойчивости вызывают проблемы. Я пробовал без него (и скрывал объект, зависящий от пользователя, в пакете Energy), но он тоже не удался.

Я немного смущен этой ошибкой. В этом контексте я также не совсем уверен в управлении транзакциями.

я был не один, кто разработан этой архитектуры (но я сказать стажер OK, не проверив это .. позор мне), но если бы я мог понять эту ошибку, и, возможно, исправить ее, не переписать сверток (и перерыв мой стаж работы), я был бы признателен. Я делаю что-то неправильно ? (это очевидно, но что ..) Пропустил ли я что-то во время чтения документации?

Кстати, я также искал некоторые рекомендации или советы, когда дело доходит до JPA, EclipseLink (или любого другого поставщика JPA) и Spring DM (и OSGi в целом). Я нашел интересные слайды от Майка Кейта по этой теме (просмотрев Stackoverflow).

+0

Ок, я, возможно, что-то нашел. Последний, развернутый с менеджером сущностей, является единственным, кто сможет что-то сохранить. Возможно, мне придется найти динамический способ добавления/удаления объектов в пакет службы Entity, чтобы исправить ошибку. –

ответ

0

Хорошо, мне кажется глупо отвечать на мой вопрос (потому что это на самом деле не ответ, а шаг к пониманию ошибки). Текст, выделенный текст Это может быть связано с переплетением во времени. Я еще не совсем в порядке с этой концепцией, поэтому я узнаю об этом.

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

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