java - Hibernate @Fetch(Join) isn't being applied instead of separate SELECTs -


i have domain entity @manytoone uni-directional relation country entity i'd eagerly loaded join instead of separate selects. thought using @fetch.

@entity @table public class domain {     @id     @genericgenerator(name = "generator", strategy = "increment")     @generatedvalue(generator = "generator")     @column(name = "domain_id")     private long domainid;      @fetch(fetchmode.join)     @manytoone(optional = false, fetch = fetchtype.eager)     private country country;       ... } 

i'm using hql query these entities.

but hibernate doesn't apply fetching strategy. i've tried @onetoone (which doesn't change in design), doesn't work. here's sample sql output

hibernate: select domain0_.domain_id domain1_2_, domain0_.country country2_, domain0_.name name2_, domain0_.type type2_ domain domain0_ order domain0_.name limit ? hibernate: select country0_.country_id country1_1_0_, country0_.code code1_0_, country0_.currency currency1_0_, country0_.name name1_0_ country country0_ country0_.country_id=? hibernate: select country0_.country_id country1_1_0_, country0_.code code1_0_, country0_.currency currency1_0_, country0_.name name1_0_ country country0_ country0_.country_id=? hibernate: select country0_.country_id country1_1_0_, country0_.code code1_0_, country0_.currency currency1_0_, country0_.name name1_0_ country country0_ country0_.country_id=? hibernate: select country0_.country_id country1_1_0_, country0_.code code1_0_, country0_.currency currency1_0_, country0_.name name1_0_ country country0_ country0_.country_id=? hibernate: select country0_.country_id country1_1_0_, country0_.code code1_0_, country0_.currency currency1_0_, country0_.name name1_0_ country country0_ country0_.country_id=? 

i'm assuming preventing being applied. that?

i querying domain entities like

from domain domain domain.type = :type 

and causing hibernate query country entity individually each domain returned.

based on tom anderson's comment , answer here, made change in hql to

from domain domain join fetch domain.country domain.type = :type 

this causes hibernate use 1 big query join in retrieve domain , country together, instead of 1 query domain entities , select retrieve country each of those.

with criteria, seems isn't necessary. when use hql need specify join fetch.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

javascript - addthis share facebook and google+ url -

ios - Show keyboard with UITextField in the input accessory view -