Spring 将QueryDslRepositorySupport与接口存储库结合使用
由于我在春季论坛上没有得到回复,我将在这里尝试一下 是否有一种方法可以通过以下方式扩展公共接口存储库:Spring 将QueryDslRepositorySupport与接口存储库结合使用,spring,spring-data,spring-data-jpa,querydsl,Spring,Spring Data,Spring Data Jpa,Querydsl,由于我在春季论坛上没有得到回复,我将在这里尝试一下 是否有一种方法可以通过以下方式扩展公共接口存储库: @NoRepositoryBean public interface CommonRepository<T> extends JpaRepository<T, Long>, QueryDslPredicateExecutor<T> { T getById(final long id); } @Repository public interface Con
@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);
}
}
有办法解决吗?我已经偶然发现了
及
但我不认为这些解决方案有帮助,我也不完全理解如何使用它们来解决问题
谢谢
Christian在
querydsrepositorysupport
下创建通用getById的一种方法如下
T getById(long id) {
return getEntityManager().find(getBuilder().getType(), id)
}
你能修复问题末尾的链接吗?@TimoWestkämper:修复了,对不起。我也想听听专家的意见。我认为简单的答案是,我们需要为实体创建一个单独的querydsl存储库,与标准存储库分开,但这似乎是lameI刚刚检查过的,SpringRoo的方法确实是必须重新存储。它们生成一个EntityRepo和一个EntityCustomRepo,自定义的是一个支持querydsl的-
T getById(long id) {
return getEntityManager().find(getBuilder().getType(), id)
}