spring-projects / spring-data-jpa

Simplifies the development of creating a JPA-based data access layer.
https://spring.io/projects/spring-data-jpa/
Apache License 2.0
2.98k stars 1.41k forks source link

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

Open spring-projects-issues opened 6 years ago

spring-projects-issues commented 6 years ago

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)

spring-projects-issues commented 5 years ago

Jens Schauder commented

DATAJPA-560 seems related