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
Hibernate甚至在我使用Left join fetch时也会生成多个SQL查询_Hibernate_Jpa_Fetch_Jpql - Fatal编程技术网

Hibernate甚至在我使用Left join fetch时也会生成多个SQL查询

Hibernate甚至在我使用Left join fetch时也会生成多个SQL查询,hibernate,jpa,fetch,jpql,Hibernate,Jpa,Fetch,Jpql,我对hibernate有一个有趣的问题,模型如下所示: @NamedQueries({ @NamedQuery(name = "A.test", query = "SELECT DISTINCT a FROM A a LEFT JOIN FETCH a.pk.b WHERE a.pk.b.pk.c.id = :cId AND a.pk.b.pk.d.id = :dId") }) @Entity @Table(name = "AT") public class A implements S

我对hibernate有一个有趣的问题,模型如下所示:

@NamedQueries({
    @NamedQuery(name = "A.test", query = "SELECT DISTINCT a FROM A a LEFT JOIN FETCH a.pk.b WHERE a.pk.b.pk.c.id = :cId AND a.pk.b.pk.d.id = :dId")
})
@Entity
@Table(name = "AT")
public class A implements Serializable {

    @EmbeddedId
    private APK pk;
}

@Embeddable
public class APK implements Serializable {

    @ManyToOne
    @JoinColumns({@JoinColumn(name = "***", referencedColumnName = "***"),
                  @JoinColumn(name = "***", referencedColumnName = "***")
    })
    private B b;
}

@Entity
@Table(name = "BT")
public class B implements Serializable {

    @EmbeddedId
    private BPK pk;
}


@Embeddable
public class APK implements Serializable {

    @ManyToOne
    @JoinColumn(name = "***", referencedColumnName = "***")
    private C c;

    @ManyToOne
    @JoinColumn(name = "***", referencedColumnName = "***")
    private D d;
}
问题是命名查询会生成其他SQL查询。。。 有什么问题?
谢谢

默认情况下,Hibernate急切地获取多对一引用。在命名查询中选择“A”时,将解析许多多对一引用,这些引用将与您看到的SQL查询相对应。hibernate的默认行为可以通过在多对一注释上明智地放置延迟加载来覆盖,即:

@ManyToOne(fetch=FetchType.LAZY)

非常感谢。它现在正在工作。但我已经读到@ManyToOne关联中fetchtype的设置对查询没有任何影响。我想我遗漏了什么,所以我回到了手册上s