0
我有3个JPA实体,如: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=?
如何触发JPQL查询,该查询只选择第一个实体的字段并排除第二个实体的字段è? 我需要在JPQL查询中更改什么?
you rock :-) !!!!! – JayZee
@JayZee只是供参考,如果您在hibernate/JPA中使用关系的PK,则不需要创建别名或连接。这是因为如果你看到底层表已经以外键的形式持有这个PK信息。所以从FK列中的所有PK都不需要加入。希望这可以帮助你。 –