spring-projects / spring-projects/spring-data-jpa

Support @EntityGraph for default methods that invoking underlying findAll [DATAJPA-1431]

Open
#1,746 1 comment 0 reactions 1 assignee View on GitHub

@odrotbohm is already working on this.

Since Dec 30, 2020.

in: querydsl type: enhancement
Dominant language
Java
Stars
3.3k
Forks
1.6k
PR merge metrics
No merged PRs in 30d

Description

Sola opened DATAJPA-1431 and commented

Currently, if users want the following code to fetch roles.authorities, they have to annotate the @EntityGraph onto the findAll method, but it would be nice if @EntityGraph annotations on default (upper level) methods can override lower level query methods' annotation.

@JvmDefault
@EntityGraph(attributePaths = ["roles.authorities"])
fun query(username: String?, roles: Set<Int>?, enabled: Boolean, pageable: Pageable): Page<User> {
    val query = BooleanBuilder()
    query += QUser.user.enabled.eq(enabled)
    if (username != null) {
        query += QUser.user.username.containsIgnoreCase(username)
    }
    if (roles != null) {
        roles.forEach {
            query += QUser.user.roles.any().id.eq(it)
        }
    }
    return findAll(query, pageable)
}

Affects: 2.1 GA (Lovelace)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.