Multiple Repositories for the Same Entity in Spring Data Rest

Viewed 16371

Is it possible to publish two different repositories for the same JPA entity with Spring Data Rest? I gave the two repositories different paths and rel-names, but only one of the two is available as REST endpoint. The point why I'm having two repositories is, that one of them is an excerpt, showing only the basic fields of an entity.

4 Answers

I ended up using the @Subselect to create a second immutable entity and bound that to the second JpaRepsotory and setting it to @RestResource(exported = false), that also encourages a separation of concerns.

Employee Example

@Entity
@Table(name = "employee")
public class Employee {

    @Id
    Long id

    String name

    ...

}
@RestResource
public interface EmployeeRepository extends PagingAndSortingRepository<Employee, Long> {

}
@Entity
@Immutable   
@Subselect(value = 'select id, name, salary from employee')
public class VEmployeeSummary {

    @Id
    Long id

    ...

}
@RestResource(exported = false)
public interface VEmployeeRepository extends JpaRepository<VEmployeeSummary, Long> {

}

Context

Two packages in the monolithic application had different requirements. One needed to expose the entities for the UI in a PagingAndSortingRepository including CRUD functions. The other was for an aggregating backend report component without paging but with sorting.

I know I could have filtered the results from the PagingAndSorting Repository after requesting Pageable.unpaged() but I just wanted a Basic JPA repository which returned List for some filters.

Related