2016-04-24 33 views
0

我已將我的項目配置爲支持靜態編織,但它不適用於延遲加載@ManyToOneEclipselink靜態編織不起作用

版本freamwork的使用:

  • 的EclipseLink-2.6.3-M1.jar
  • wildfly 10.0.0
  • JPA 2.0
  • 的EclipseLink-staticweave-行家-插件: 1.0.4

我的配置:

- pom.xml中:

      ... 
      <plugin> 
      <artifactId>eclipselink-staticweave-maven-plugin</artifactId> 
      <groupId>au.com.alderaan</groupId> 
      <version>1.0.4</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>weave</goal> 
        </goals> 
        <phase>process-classes</phase> 
        <configuration> 
         <logLevel>ALL</logLevel> 
       <includeProjectClasspath>true</includeProjectClasspath> 
        </configuration> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>org.eclipse.persistence</groupId> 
        <artifactId>eclipselink</artifactId> 
        <version>${eclipslink-version}</version> 
       </dependency> 
      </dependencies> 
      </plugin> 
      ... 

- persistence.xml中:

... 
    <validation-mode>NONE</validation-mode> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <shared-cache-mode>NONE</shared-cache-mode> 
    <properties> 
     <property name="eclipselink.target-database" value="MySQL" /> 
     <property name="eclipselink.target-server" value="JBoss" /> 
     <property name="eclipselink.weaving" value="static" /> 
     <!-- LOG DEBUG --> 
     <property name="eclipselink.logging.level.sql" value="FINEST" /> 
     <property name="eclipselink.logging.parameters" value="true" /> 
     <property name="eclipselink.logging.level.transaction" 
      value="FINEST" /> 
     <property name="eclipselink.logging.level" value="FINEST" /> 
     <property name="eclipselink.logging.level.cache" value="FINEST" /> 
    </properties> 
    ... 

- User.java:

  ... 
      @JoinColumn(name = "PARTNER_ID", referencedColumnName = PARTNER_ID", nullable = false) 
      @ManyToOne(optional = false, fetch = FetchType.LAZY) 
      private Partner partnerId; 
      ... 

- 日誌:

      14:14:00,696 INFO [stdout] (default task-14) [EL Fine]: 2016-04-24 14:14:00.696--ServerSession(2107137839)--Connection(1003936572)--Thread(Thread[default task-14,5,main])--SELECT USER_ID, USER_LOGIN, USER_MAIL, USER_PWD, PARTNER_ID FROM user WHERE (USER_LOGIN = ?) 
       14:14:00,696 INFO [stdout] (default task-14) bind => [admin] 
       14:14:00,703 INFO [stdout] (default task-14) [EL Finest]: 2016-04-24 14:14:00.703--ServerSession(2107137839)--Connection(453922073)--Thread(Thread[default task-14,5,main])--Connection released to connection pool [read]. 
       14:14:00,705 INFO [stdout] (default task-14) [EL Finest]: 2016-04-24 14:14:00.705--UnitOfWork(889591992)--Thread(Thread[default task-14,5,main])--Execute query ReadObjectQuery(name="partnerId" referenceClass=Partner) 
       14:14:00,706 INFO [stdout] (default task-14) [EL Finest]: 2016-04-24 14:14:00.706--ServerSession(2107137839)--Connection(1634321100)--Thread(Thread[default task-14,5,main])--Connection acquired from connection pool [read]. 
       14:14:00,706 INFO [stdout] (default task-14) [EL Finest]: 2016-04-24 14:14:00.706--ServerSession(2107137839)--Thread(Thread[default task-14,5,main])--reconnecting to external connection pool 
       14:14:00,706 INFO [stdout] (default task-14) [EL Fine]: 2016-04-24 14:14:00.706--ServerSession(2107137839)--Connection(415563557)--Thread(Thread[default task-14,5,main])--SELECT PARTNER_ID, DISABLED FROM partner WHERE (PARTNER_ID = ?) 
       14:14:00,706 INFO [stdout] (default task-14) bind => [1] 
       14:14:00,852 INFO [stdout] (default task-14) [EL Finest]: 2016-04-24 14:14:00.852--ServerSession(2107137839)--Connection(1992473777)--Thread(Thread[default task-14,5,main])--Connection released to connection pool [read]. 
       14:14:00,853 INFO [stdout] (default task-14) [EL Finer]: 2016-04-24 14:14:00.853--UnitOfWork(889591992)--Thread(Thread[default task-14,5,main])--TX beforeCompletion callback, status=STATUS_ACTIVE 
       14:14:00,853 INFO [stdout] (default task-14) [EL Finer]: 2016-04-24 14:14:00.853--UnitOfWork(889591992)--Thread(Thread[default task-14,5,main])--begin unit of work commit 
       14:14:00,859 INFO [stdout] (default task-14) [EL Finer]: 2016-04-24 14:14:00.859--UnitOfWork(889591992)--Thread(Thread[default task-14,5,main])--TX afterCompletion callback, status=COMMITTED 
       14:14:00,860 INFO [stdout] (default task-14) [EL Finer]: 2016-04-24 14:14:00.86--UnitOfWork(889591992)--Thread(Thread[default task-14,5,main])--end unit of work commit 
       14:14:00,860 INFO [stdout] (default task-14) [EL Finer]: 2016-04-24 14:14:00.86--UnitOfWork(889591992)--Thread(Thread[default task-14,5,main])--release unit of work 
       14:14:00,861 INFO [stdout] (default task-14) [EL Finer]: 2016-04-24 14:14:00.861--ClientSession(1390020981)--Thread(Thread[default task-14,5,main])--client released 

當我在日誌中加載用戶總是我看到請求得到合作伙伴請求! ?

回答

0

我想我已經找到了問題: 首先我必須使用插件1.0.4的最新版本:

  <!-- This plugin ensures the EclipseLink static weaving --> 
      <plugin> 
       <artifactId>eclipselink-staticweave-maven-plugin</artifactId> 
       <groupId>au.com.alderaan</groupId> 
       <version>1.0.4</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>weave</goal> 
         </goals> 
         <phase>process-classes</phase> 
         <configuration> 
          <logLevel>ALL</logLevel> 
          <includeProjectClasspath>true</includeProjectClasspath> 
         </configuration> 
        </execution> 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>org.eclipse.persistence</groupId> 
         <artifactId>eclipselink</artifactId> 
         <version>${eclipslink-version}</version> 
        </dependency> 
       </dependencies> 
      </plugin> 

在日食,如果我運行一個乾淨的安裝,然後發佈並運行該項目,編織完美地工作。但如果我清理安裝,然後使用eclipse自動清理(Maven-> update project)eclipse清除使用我們的maven插件創建的.classes,並創建其他未編織優化的.classes。