ego icon indicating copy to clipboard operation
ego copied to clipboard

Fix performance issues related to hibernate joins on User and Group Permissions queries

Open anncatton opened this issue 6 years ago • 0 comments

The queries for user and group permissions require joins between permission, user/group and policy. Tried to implement with a JoinFetch but got this error when no query text is provided:

"message": "org.hibernate.QueryException: query specified join fetching but the owner of the fetched association was not present in the select list [FromElement{explicit not a collection join fetch join fetch non-lazy properties classAlias=generatedAlias2 role=bio.overture.ego.model.entity.UserPermission.owner tableName=egouser tableAlias=user2_ origin=userpermission userpermis0_ columns={userpermis0_.user_id className=bio.overture.ego.model.entity.User}}] [select distinct count(distinct generatedAlias0) from bio.overture.ego.model.entity.UserPermission as generatedAlias0 inner join generatedAlias0.policy as generatedAlias1 inner join fetch generatedAlias0.owner as generatedAlias2 where generatedAlias1.id=:param0]; nested exception is java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified join fetching but the owner of the fetched association was not present in the select list [FromElement{explicit not a collection join fetch join fetch non-lazy properties classAlias=generatedAlias2 role=bio.overture.ego.model.entity.UserPermission.owner tableName=egouser tableAlias=user2_ origin=userpermission userpermis0_ columns={userpermis0_.user_id className=bio.overture.ego.model.entity.User}}] [select distinct count(distinct generatedAlias0) from bio.overture.ego.model.entity.UserPermission as generatedAlias0 inner join generatedAlias0.policy as generatedAlias1 inner join fetch generatedAlias0.owner as generatedAlias2 where generatedAlias1.id=:param0]"

Opted to implement this with a LEFT join but this results in multiple SELECTS.

anncatton avatar Feb 03 '20 18:02 anncatton