java - Hibernate eager loading not fetching all child rows -
hibernate version 4.3.10
i have parent/child relationship described in example. there occasions when expect 1 row returned when querying provider. in case, limit criteria calling setmaxresults method 1.
dump of sql revealed hibernate makes outer join calls ends returning more 1 row, because of limit set on criteria, first child row read database.
@entity @table(name = "f_provider") public class provider { @onetomany(cascade = cascadetype.all, mappedby = "provider", orphanremoval = true, fetch = fetchtype.eager) private final set<credentialfielddefinition> credentialfielddefinitionlist; } @entity @table(name = "f_cred_fields", uniqueconstraints = { @uniqueconstraint(columnnames = { "name", "provider_id" }) }) public class credentialfielddefinition { @manytoone(targetentity = provider.class, optional = false) @joincolumn(name = "provider_id", nullable = false, unique = false) private provider provider; }
how convince return me full child set when reading row?
you can try using subselect fetch mode:
@onetomany(cascade = cascadetype.all, mappedby = "provider", orphanremoval = true, fetch = fetchtype.eager) @fetch(fetchmode.subselect) private final set<credentialfielddefinition> credentialfielddefinitionlist;
this way credentialfielddefinitionlist
initialized in separate query.
Comments
Post a Comment