Say i have one-to-many relationship between Product and ProductNames Product ----> PID (PK) ProductNames------> PID, USECODE, STARTTIME as composite ID and ENDTIME is another normal column. Now i want to fetch product with PID='1' and USECODE='100' and STARTTIME < CURRENTTIME < ENDTIME. CURRENTTIME value will be known at runtime. How to specify this in mapping and fetch Product & ProductNames using eager fetching? ANS: Using Filters, this problem can be resolved. Define filter, attach filter and enable filter. Filter supports specifying positional parameters value at runtime. but i got 1 problem with filters : Suppose i have 1 product with id as 100, it has 5 ProductNames..but when we apply filter only 2 productNames remains. When i use just "inner join fetch" with no filters, it returns me one Product object which contains List of productNames properly populated. BUT When i use "select distinct product" and inner join fetch" with filter, it returns one product populated with productNames list which contains 3 elements viz. null, first filtered productName, second filtered productName.. Why productNames list contains the first element as null? This seems to be a bug..