> For the complete documentation index, see [llms.txt](https://bernardo.gitbook.io/development-docs-java/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bernardo.gitbook.io/development-docs-java/spring-data/jpa-repositories/custom-repositories.md).

# Custom Repositories

Repositores can be extended with custom code. This requires the following classes:

* Spring repository interface
* Custom repository interface
* Custom repository implementation

## Model

### Repository Interface

```java
public interface EntityCustomRepository  {

   public Iterable<Entity> findByCustomQuery();

}
```

### Custom Repository Interface

```java
public interface EntityRepository extends JpaRepository<Entity, EntityKey> extends EntityCustomRepository {

}
```

### Custom Repository Implementation

```java
public class EntityCustomRepositoryImpl implements EntityCustomRepository   {

   public final Iterable<Entity> findByCustomQuery() {
      // Implementation
   }

}
```

## Usage

Now calling the findByCustomQuery method in the repository will call the method in theDefautlEntityCustomRepository implementation. Spring will mix this code with the repository it generates.

```java
public final class EntityService {

   @Autowired
   private EntityRepository repository;

   public final Iterable<Entity> getByCustomQuery(){
      return repository.findByCustomQuery();
   }

}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bernardo.gitbook.io/development-docs-java/spring-data/jpa-repositories/custom-repositories.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
