我使用EclipseLink 2.3.1爲JPA 2建模自引用表。 當我創建EntityManager時,我從EclipseLink中得到奇怪的警告。無法理解EclipseLink警告
[EL Warning]: 2011-11-27 14:28:00.91--ServerSession(8573456)--Reverting the lazy setting on the OneToOne or ManyToOne attribute [redirectID] for the entity class [class lp.db.model.Site] since weaving was not enabled or did not occur.
我找不到有關此警告的任何文檔,我不確定這是什麼意思。 我也想知道如何解決導致此警告出現的問題...
我是JPA的新手,所以它可能是一件愚蠢的事情。 我的程序非常簡單。下面是實體的定義:
@Entity
@Table(name="site")
public class Site implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="site_id")
public String siteID;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="redirect_id", referencedColumnName="site_id")
public Site redirectID;
@Column(name="name")
public String name;
}
下面是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="lpdb2" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>lp.db.model.Site</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/lpdb2"/>
<property name="javax.persistence.jdbc.user" value="blabla"/>
</properties>
</persistence-unit>
</persistence>
導致此警告的代碼:
Persistence.createEntityManagerFactory("lpdb2").createEntityManager();
注意,所產生的EM是罰款和能用於(例如)查找元素。 另外,我可以遍歷實體圖 - 我可以在數據庫中找到一個實體,然後使用redirectID字段獲得另一個實體。
謝謝!出於某種原因,我跳過了這個資源。我會看看。 – gamliela
我必須將-javaagent:eclipselink.jar添加到JVM命令行才能使動態編織工作。請參閱http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Dynamic_Weaving – Nathan