These are my mapped classes:
@Entity
public class Item {
...
@ElementCollection
@CollectionTable(name = "BID")
private Set<Bid> bids = new HashSet<>();
...
}
@Embeddable
@Immutable
public class Bid implements Serializable {
...
@ManyToOne(fetch = FetchType.LAZY)
private User bidder;
...
}
@Entity
public class User {
...
}
Is there a way to query all bids and join fetch all bidders to avoid n+1 problem?
It will be smth like this
session.createQuery("SELECT b FROM Item i " +
"JOIN i.bids b " +
"JOIN FETCH b.bidder", Bid.class)
but this fails with:
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list[FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=null,role=null.bidder...]
I know that making Bid class entity instead of embeddable will solve the problem, but i am interested is there any way how to do this with this mapping
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…