There is a use case I am struggling with SDR as below -
THere is User Table and RefSecQuestion tables
User -> ManyTOOne -> RefSecQuestion , RefSecQuestion -> OneToMany -> User
THere is User Table and UserFriends tables
User -> OneToMany UserFriends , UserFriends -> ManyToOne -> User
There is a requirement that when I go /users/{id}/userFriends , then firstname , lastname etc from UserProjection should be shown by default
As a result, I enabled excerptProjection in UserRepository and it works fine. I expect about 100 results here so that is fine if this result is not paginated.
But , now since RefSecQuestion is also related to User , what happens is that when I go /refSecQuestions -> this page hangs since it is trying to substitute user link with UserProjection. The RefSecQuestion table is skewed with one question for most of users and therefore the page breaks due to loss of pagination.
since i cant choose unidirectionality here as both url are needed i.e
/users/{id}/userFriends
/refSecQuestions/users
THe closest answer I found was to choose unidirectinality which is that I set Rest Export to false for User in RefSEcQuestion
Finally I am able to get my desired results and am posting here for all SDR users. I wanted to have pagination in this URL - where User -> One To Many -> UserLanguages
Now Using default SDR configuration, embedded resources don't get paginated and therefore I have to manually expose them and the Workaround is as below which still takes very less lines of code -
then, in UserLangRepository
Here name findByUserId follows Spring Data Query Derivation rule where there is user column in UserLanguage and id column in User. Then following URL is paginated and have other options as well like sort, size etc..
There is an issue however that next and prev links point to forwarded link..