Hi Andrus, sorry about the belated reply. >> Hi all. >> I’m getting some unexpected behaviour when applying a fetch limit and doing >> joint prefetching on a to-many relationship. In short, the number of objects >> returned is always lower than the actual fetch limit I set. Problem goes >> away if I do a disjoint prefetch or no prefetching at all. >> >> I created a tiny self-contained maven project that demonstrates the problem: >> >> https://bitbucket.org/hugi/prefetch-dilemma >> >> The source for the main class in that project (that can be run to show what >> happens): >> >> https://bitbucket.org/hugi/prefetch-dilemma/src/master/src/main/java/prefetchdilemma/Main.java >> >> Anyone run into this before? >> >> Cheers, >> - hugi > > > Yeah, that's a limitation described here: [1]. Also mentioned in the docs, > though it may be hard to spot [2]: > > "Disjoint-by-ID Prefetching Semantics [..] Moreover this is the only type of > prefetch that can handle SelectQueries with fetch limit. Both joint and > regular disjoint prefetches may produce invalid results or generate > inefficient fetch-the-entire table SQL when fetch limit is in effect.”
Maybe Cayenne should throw an exception (or log a warning) if prefetch semantics other than Disjoint-by-ID is used with a fetch limit? This is something I can see users burning themselves on (I know I did). Cheers, - hugi