, так как я не получил ответа на весенний форум, я попробую здесь.Использование QueryDslRepositorySupport в сочетании с репозиториями интерфейса
Есть ли способ, чтобы иметь общее хранилище интерфейс, который расширен с помощью интерфейсов следующим образом:
@NoRepositoryBean
public interface CommonRepository<T> extends JpaRepository<T, Long>, QueryDslPredicateExecutor<T> {
T getById(final long id);
}
@Repository
public interface ConcreteRepository extends CommonRepository<ConcreteEntity> {
List<ConcreteEntity> getByNameAndAddress(final String name, final String address);
}
public class ConcreteRepositoryImpl extends QueryDslRepositorySupport implements ConcreteRepository {
private BooleanExpression nameEquals(final QConcreteEntity entity, final String name) {
return entity.eq(name);
}
public List<ConcreteEntity> getByNameAndAddress(final String name, final String address) {
QConcreteEntity entity = QConcreteEntity.concreteEntity;
return from(entity).where(entity.name.eq(name).and(entity.address.eq(address))).list(entity);
}
}
Проблема с реализацией в том, что я должен реализовать getById(final long id)
в каждом конкретном классе. Я не хочу этого делать. Обычно весенние данные автоматически узнают о каждом объекте. Также я хочу иметь функциональность QueryDslRepositorySupport
. В моем примере это обычно создает что-то вроде:
select .. from concreteentity en where en.id = ...
Есть ли способ решить эту проблему? Я уже наткнулся на Spring Jpa adding custom functionality to all repositories and at the same time other custom funcs to a single repository
и
, но я не думаю, что эти решения являются полезными, и я не совсем понимаю, как я могу использовать их, чтобы решить эту проблему.
Спасибо,
христианские
Не могли бы вы исправить ссылки в конце вашего вопроса? –
@ TimoWestkämper: исправлено это, извините. –
Я бы тоже хотел услышать от эксперта. Я думаю, что простой ответ будет заключаться в том, что нам нужно создать отдельный репозиторий querydsl для объекта, отдельно от стандартного репозитория, но это похоже на lame. – chrismarx