小编chr*_*yer的帖子

将 QueryDslRepositorySupport 与接口存储库结合使用

由于我在spring论坛上没有得到回复,我会在这里尝试一下。

有没有办法拥有一个通用接口存储库,它通过以下方式由接口扩展:

@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);
    }
}
Run Code Online (Sandbox Code Playgroud)

实现的问题是我必须getById(final long id) 在每个具体的类中实现。我不想那样做。通常,spring 数据会自动了解每个实体。我也想拥有QueryDslRepositorySupport. 在我的示例中,它通常会生成如下内容:

select .. from …
Run Code Online (Sandbox Code Playgroud)

spring querydsl spring-data spring-data-jpa

5
推荐指数
1
解决办法
3723
查看次数

标签 统计

querydsl ×1

spring ×1

spring-data ×1

spring-data-jpa ×1