0

次のような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;
 }

そして、次のような JPA クエリを実行します。

SELECT l FROM Link l left join fetch l.subnetwork sann   
where sann.project.id = :projectId 

そして、次のような SQL クエリを生成します。

select * from RMT6.link, SUBNETWORK where link.subnetwork = SUBNETWORK.id 
and SUBNETWORK.project=?

最初のエンティティのフィールドのみを選択し、2 番目のエンティティのフィールドを除外する JPQL クエリをトリガーするにはどうすればよいですか? JPQL クエリで何を変更する必要がありますか?

4

1 に答える 1

1

エンティティ関係に基づいて、JOINクエリを使用する必要はないと思います。

SELECT * FROM LINK l WHERE l.network.project.id = :projectId
于 2013-07-17T11:58:05.223 に答える