Я использую Hibernate в приложении Spring Boot. Я создаю новый CrudRepository для всех объектов Model, чтобы выполнять основные задачи CRUD. Они выглядят так:Spring Boot extension CrudRepository
@Repository
public interface FoobarCrudRepo extends CrudRepository<Foobar, Long> {
}
Но я всегда нужно делать какие-то дополнительные вещи, как пользовательские поисковые запросы с неравенством и такие. Я придерживаюсь такой схемы:
@Repository
public class FoobarDao {
@PersistenceContext
EntityManager em;
public List<Foobar> findFoobarsByDate(Date date) {
String sql = "select fb from Foobar fb where createdDate > :date";
...
return query.getResultList();
}
}
Вопрос в том, могу ли я объединить эти два понятия в один класс? Я попытался сделать его абстрактным классом, например:
@Repository
public abstract class FoobarCrudRepo extends CrudRepository<Foobar, Long> {
@PersistenceContext
EntityManager em;
public List<Foobar> findFoobarsByDate(Date date) {
String sql = "select fb from Foobar fb where createdDate > :date";
...
return query.getResultList();
}
}
Но потом весна не создала для него компонент.
Как это сделать?
Спасибо!
Если вы используете пружинные ботинки, то вы определенно должны использовать пружинные загрузки JPA. Я думаю, что это лучший вариант. Вам даже не нужно будет писать класс DAO. – pmverma