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)
}