JPA&x27;s FetchType.LAZY不';不行?

JPA&x27;s FetchType.LAZY不';不行?,jpa,eclipselink,lazy-loading,Jpa,Eclipselink,Lazy Loading,我的提供者是: org.eclipse.persistence.jpa.PersistenceProvider 我的实体代码是: @Entity @NamedQueries( { @NamedQuery(name = "Bank.findAll", query = "select o from Bank o") }) @Table(name = "B_BANK") public class Bank implements Serializable { private final static

我的提供者是: org.eclipse.persistence.jpa.PersistenceProvider

我的实体代码是:

@Entity
@NamedQueries( { @NamedQuery(name = "Bank.findAll", query = "select o from Bank o") })
@Table(name = "B_BANK")
public class Bank implements Serializable {

private final static String ID_GENERATOR = "Bank";

private Long id;
private User modifier;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = ID_GENERATOR)
@SequenceGenerator(name = ID_GENERATOR, allocationSize = 1, sequenceName = "sq_B_BANK")
@Column(name = "id")
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "modifier")
public User getModifier() {
    return modifier;
}

public void setModifier(User modifier) {
    this.modifier = modifier;
}
}

我的测试代码是:

    entityManagerHelper = new EntityManagerHelper("Model", isAutoCommit);

   List l = entityManagerHelper.getEntityManager().createQuery("select b from Bank b").getResultList();
然而,在我的控制台中,我有这样一个:

从B_BANK中选择id、修改器 从B_用户中选择id、创建日期、修改日期、修改人、创建者,其中(id=?) 绑定=>[2]

因此,JPA似乎是为我将fetch=FetchType.LAZY放在上面的用户查询的! 我想知道为什么JPA也为用户查询。
任何帮助都将不胜感激。

尽管答案是正确的,但EclipseLink使用编织来实现一对一和多对一关系的惰性抓取。如果您不是在容器环境中运行的,那么您必须添加一个代理或将实体设置为静态编织,以便在1:1上使用lazy,如下所述:和