Я использую JPA с Hibernate3 в качестве реализации.У меня есть таблица ассоциации UsrGrp
Usr.java
@Id
@Basic(optional = false)
@Column(name = "usr_id")
private String usrId;
@OneToMany(mappedBy = "usr")
private List<UsrGrp> usrGrpList;
UsrGrp.java
@EmbeddedId
protected UsrGrpPK usrGrpPK;
@Column(name = "updated_by")
private String updatedBy;
@Column(name = "updated_date")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedDate;
@JoinColumn(name = "grp_id", referencedColumnName = "grp_id", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Grp grp;
@JoinColumn(name = "usr_id", referencedColumnName = "usr_id", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Usr usr;
Grp.java
@Id
@Basic(optional = false)
@Column(name = "grp_id")
@OneToMany(mappedBy = "grp")
private List<UsrGrp> usrGrpList;
(Usr) 1 -------- * (UsrGrp) * -------- 1 (Grp)
Когда я выполняю следующие sql.
SELECT DISTINCT usr FROM Usr usr LEFT JOIN FETCH usr.usrGrpList
Hibernate фактически выполняет то же количество запросов на выборку, что и номера Grp, которые у меня есть.
select grp0_.grp_id as grp1_6_0_ from grp grp0_ where grp0_.grp_id=?
select grp0_.grp_id as grp1_6_0_ from grp grp0_ where grp0_.grp_id=?
...
Есть ли способ избежать этого выбора N?запросы?Спасибо.