2

エンティティで遅延フェッチを行うアプリケーションをデプロイしているときに、GlassFish ターミナルで次の警告が表示されます。

警告: ウィービングが有効になっていないか、行われなかったため、エンティティ クラスのOneToOneまたはManyToOne 属性の遅延設定を元に戻しています。[zoneTable][class entity.ZoneCharge]

プロジェクトにリストされているすべてのエンティティに対して。

私のpersistence.xmlファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 
             xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence"
             http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    <persistence-unit name="Project-ejbPU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/pool</jta-data-source>

        <class>entity.ZoneTable</class>
        <!--Other classes-->
        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <properties>
            <property name="eclipselink.weaving" value="static"/>
            <property name="eclipselink.target-server" value="SunAS9"/>
            <property name="eclipselink.logging.parameters" value="true"/>
            <property name="eclipselink.logging.level.sql" value="FINEST"/>
            <property name="eclipselink.logging.level" value="FINEST" />
            <property name="eclipselink.logging.level" value="WARNING"/>
            <property name="eclipselink.logging.level.cache" value="FINEST"/>
        </properties>
    </persistence-unit>
</persistence>

ZoneTableクラスは次のようになります。

@Entity
@Table(name = "zone_table", catalog = "projectdb", schema = "")
public class ZoneTable implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "zone_id")
    private Long zoneId;

    @Column(name = "zone_name")
    private String zoneName;

    @OneToMany(mappedBy = "zoneTable", fetch = FetchType.LAZY)
    private Set<ZoneCharge> zoneChargeSet;

    //Setters and getters.
}

ここで、遅延フェッチはリモート EJB でも機能しますが、上記の警告のために熱心であると考えられます。

この警告を回避するためにウィービング (またはその他の方法) を有効にする方法は?

ここで述べたようにこのコマンドを入力すると、

java org.eclipse.persistence.tools.weaving.jpa.StaticWeave

コマンドラインで、次のエラーが表示されます。

エラー: メインの classorg.eclipse.persistence.tools.weaving.jpa.StaticWeave が見つからないか読み込めませんでした

この警告を克服する方法は何ですか?

4

1 に答える 1

1

org.eclipse.persistence.tools.weaving.jpa.StaticWeave静的ウィービングのためにそのクラスを実行しようとするときは、クラスパスに EclipseLink.jar があることを確認してください。

ただし、GlassFish 4 で実行している場合は、静的ウィービングを使用する必要はありません。<property name="eclipselink.weaving" value="static"/>プロパティを削除して、デプロイを再試行してください。このプロパティは、動的ウィービングが発生しないように、クラスが既に静的に拡張されていることを示します。これらは拡張されていないため、遅延 1:1 および M:1 はデフォルトで熱心になります。

于 2013-09-13T15:20:53.790 に答える