Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa Can';我不明白日食警告_Jpa_Eclipselink_Self Join - Fatal编程技术网

Jpa Can';我不明白日食警告

Jpa Can';我不明白日食警告,jpa,eclipselink,self-join,Jpa,Eclipselink,Self Join,我正在使用EclipseLink 2.3.1为JPA2的自参考表建模。 当我创建EntityManager时,我从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

我正在使用EclipseLink 2.3.1为JPA2的自参考表建模。 当我创建EntityManager时,我从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>
请注意,生成的EM很好,可以用于(例如)查找元素。 此外,我还可以遍历实体图-我可以在数据库中找到一个实体,然后使用redirectID字段获得另一个实体。

请参阅

为了在XxxToOne关联上实现延迟抓取,必须修改JPA实体的字节码(这就是编织的意思)。如果未修改,则只能获取XxxToOne关联


即时抓取意味着每次从数据库加载
站点
,其
重定向ID
也会被加载。通过延迟抓取,您可以加载一个站点,当您在
redirectID
字段上调用一个方法时,它的重定向才会(延迟地)加载。

谢谢!出于某种原因,我跳过了此资源。为了让动态编织工作起来,我不得不将-javaagent:eclipselink.jar添加到JVM命令行中。看见
Persistence.createEntityManagerFactory("lpdb2").createEntityManager();