Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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
Java JPA查询未加载联接实体字段而离开联接_Java_Hibernate_Jpa_Jpql - Fatal编程技术网

Java JPA查询未加载联接实体字段而离开联接

Java JPA查询未加载联接实体字段而离开联接,java,hibernate,jpa,jpql,Java,Hibernate,Jpa,Jpql,我有3个JPA实体,例如: @Entity public class Link implements { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "network", referencedColumnName = "id") private Network network; //... } @Entity public class Network implements LinkOwner {

我有3个JPA实体,例如:

@Entity
public class Link implements  {

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "network", referencedColumnName = "id")
   private Network network;
   //...
}

@Entity
public class Network implements LinkOwner {
    @OneToMany(mappedBy = "network")
    @Cascade(value = { CascadeType.ALL })
    private Set<Link>   links;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "project", referencedColumnName = "id", nullable = false)
     private Project Network.project;
  //...
 }


@Entity
public class Project {
    @OneToMany(mappedBy = "project", orphanRemoval = true)
    @Cascade(value = { CascadeType.ALL })
    @Fetch(FetchMode.SELECT)
    private Set<Network>    networks;
 }
它生成一个SQL查询,类似于:

select * from RMT6.link, SUBNETWORK where link.subnetwork = SUBNETWORK.id 
and SUBNETWORK.project=?
如何触发仅选择第一个实体的字段并排除第二个实体的字段的JPQL查询?
我需要在JPQL查询中更改什么?

基于您的实体关系,我认为您不需要使用
JOIN
查询

SELECT * FROM LINK l WHERE l.network.project.id = :projectId

@JayZee仅供参考,如果您正在使用hibernate/JPA中的关系PKs,则不需要创建别名或联接。这之所以成立,是因为如果您看到基础表已经以外键的形式持有此PK信息。因此,FKs列中的所有PK都不需要联接。希望这对您有所帮助。我如何使用“加入OneToMany with list”?我尝试了使用显式连接所有表的“fetch”
SELECT * FROM LINK l WHERE l.network.project.id = :projectId