4
因爲我沒有在春季論壇上得到答覆,所以我會在這裏試一試。將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
和
,但我不認爲這些解決方案是有益的,我並不完全明白,我怎麼可以用它們來解決這個問題。
感謝,
基督教QuerydslRepositorySupport
下創建一個通用的getById
你能解決你的問題的末尾的鏈接? –
@TimoWestkämper:修好了,對不起。 –
我想聽聽這位專家的意見。我認爲簡單的答案是,我們需要爲實體創建一個單獨的querydsl存儲庫,與標準存儲庫分開,但這看起來很蹩腳 – chrismarx