then can I write something like
1)"from Supplier s inner join fetch s.products as p where s.products.price > 100";
It doesn't make sense to write what you've written (and it wouldn't make much sense if this were a SQL query either). You've defined a join on products and assigned this association an alias of p, then you've refered to products without using the alias. The only situation where an eager fetch (remember, as I said earlier this is a
different thing than a simple join) might need an alias is if you are fetching accross two associated collections. i.e. if products had a collection of items for example.
also, the document write ""Nor should fetch be used together with setMaxResults() or setFirstResult() as these operations are based on the result rows, which usually contain duplicates for eager collection fetching, hence, the number of rows is not what you'd expect."
I cannot understand what it said!! for example, I want to retrieve 1000 rows, even with duplicate record, then can I use .setMaxResults(1000); ??
No. But you can use them if you use a normal join, rather than one that uses eager fetching.